IFRAME使用の画面で座標を求めたい

[新着] Webテンプレートを仮オープンしました



0   名前: ハッスル : 2007/05/04(金) 08:17  ID:Vai2loGZ sub-Cl
はじめまして。IE6,7においてクリックした場所の座標の
求め方に関して質問させてください。

トップの親HTMLの中にIFRAMEで指定した子HTMLがある画面において
子HTML内をクリックした際に、子のクライアント領域での座標は
(event.clientX,Yで)取得できますが、親HTML側のクライアント領域として
見た座標は取得できるでしょうか?

例として、子のIFRAMEが親の座標(x=50, y=50)に配置されていて子の座標
(x=20, y=30)をクリックした場合、親から見て座標(x=70, y=80)の部分を
クリックしたみたいな感じです。

つまり子のIFRAMEが親のどこに配置されているかわかれば
計算できると思うのですが、動的な画面を作成しているため、
絶対値指定という訳にいきません。
IFRAMEが配置された座標を取得する方法はあるものなのでしょうか?

試してみたことはIFRAMEにidを指定しておき、DOMの操作で
オブジェクトを取得してstyleのtop,leftを参照してみましたが、
空でした。(指定してないんだから当たり前かもしれませんが。。)

何か良い手段があればご教授ください。よろしくお願いします。

1   名前: miz : 2007/05/04(金) 08:17  ID:Qk.1KQzu sub-.G
前提:親HTMLと、IFRAME内の子HTMLとが同じサイトに有る時
IFRAMEのid="inner"だとして、そのオブジェクトのoffsetTop,offsetLeft でIFRAMEの位置が解るので、それを、子HTML内で得られた座標に足し算すればよさそうです。
 function getParentPoint(e){
	var all_x,all_y;
	var p_obj = window.parent.document.getElementById('inner');
	var str = "parent id=" + p_obj.id +"; left=" + p_obj.offsetLeft +", top=" + p_obj.offsetTop;
	all_x = p_obj.offsetLeft;	all_y = p_obj.offsetTop;

	if(! e ){	// ie 
		e = window.event;
	}
	all_x += e.clientX;	all_y += e.clientY;
	str += "\n this x=" + e.clientX +", y=" + e.clientY;
	str += "\n all x="+ all_x + ", y=" +all_y;
	alert(str);
}

2   名前: ハッスル : 2007/05/04(金) 08:17  ID:ss2zGVqQ sub-Cl
回答ありがとうございました。
ややこしい質問でお手数おかけしました。
勿論同一サイトなのでアクセスも可能です。

一覧へ戻る