2006年08月19日

 自分自身を閉じる

1) 通常フレームが IFRAME として参照されている
2) このページが通常フレームの2フレームの一つとして使用されている

<SCRIPT language="javascript" type="text/javascript">

function CloseIframe( ) {

	var strName = parent.name;

	parent.parent.document.getElementsByName( strName )[0].style.display = 'none';

}

</SCRIPT>




2006年07月07日

 IFRAME を閉じる

IFRAME オブジェクトを取得し、style.display 属性に "none" をセットする

<SCRIPT language="javascript" type="text/javascript">

function CloseIframe( iframeName ) {

	var objIframe = document.getElementsByName(iframeName)[0];
	objIframe.style.display = "none";

}

</SCRIPT>

<INPUT type="button" value="閉じる" onClick='CloseIframe( "myframe" )'>
<br>

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

 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>