2006年07月07日

 IFRAME 内にアクセス




実際の使用サンプルは --> こちら

以下は、IFRAME の中に FRAMEがあり、その FRAME のウインドウのひとつの内部にアクセスする例です。
( A(frame.htm) から B(Head.htm) にアクセスします )

function SqlIframe( iframeName, txtObj ) {
	var obj = document.getElementsByName(iframeName)[0];
	obj.contentWindow.Head.document.getElementsByName("text")[0].value = 
		txtObj.firstChild.nodeValue;
	obj.contentWindow.Head.document.getElementsByName("send")[0].click();
}

FRAME や IFRAME には、target として Web ページを表示できるので、
name 属性で名前を付けます。
その「名前」で IFRAME そのものを参照すると以下のようになります。

document.getElementsByName("名前")[0]

このオブジェクトは、IFRAME をひとつのコンテンツとして、例えば表示・非表示をコントロール
場合に使用したりします。しかし、このままでは IFRAME 内部にはアクセスできないので、
さらに以下のオブジェクトを取得します
( ※ var obj = document.getElementsByName("名前")[0]; という前提で )

obj.contentWindow

さらに、このサンプルでは、IFRAME の中に フレームページが表示されているので、
FRAME の内部にアクセスする為に、Head という名前で FRAME のウインドウオブジェクト
取得します。

※ これからも解りますが、IFRAME の扱いは特別です。FRAME に対するアクセスは、そのまま
※ 直感的に行えますが、IFRAME では contentWindow を利用する必要があります

obj.contentWindow.Head


以下に IFRAME 記述のサンプルを示します

<IFRAME
	src="frame.htm"
	name="myframe"
	frameborder="1"
	scrolling="yes"
	width="590"
	height="800"
></IFRAME>