window.parent と window.opener の違い JavaScript はメインの window メソッドを呼び出します
1: window.parent は、親ページ オブジェクトを呼び出す iframe ページの例です。
a.html
HTML コード<html>
<head><title>親ページ</title></head>
<本文>
<form name="form1" id="form1">
<input type="text" name="ユーザー名" id="ユーザー名"/>
</form>
<iframe src="b.html" width=100%></iframe>
</body>
</html>
b.htm 内の a.htm 内のユーザー名テキスト ボックスに値を割り当てる必要がある場合は、多くのアップロード関数と同様に、アップロードが成功した後、アップロード関数ページが Ifrmae にあります。親ページの
HTMLコードは
b.htmlで記述する必要があります。
<script type="text/javascript">
var _parentWin = window.parent;
_parentWin.form1.username.value = "xxxx" ;
</script>
インスタンスのアドレス: http://www.cnspry.cn/blog/attachments/window.parentinstance/a.html
ソースコード:
1.a.html
HTMLコード
<html>
<頭>
<title>メインページ</title>
<スクリプト>
/** 親ウィンドウのグローバル変数を呼び出す IFrame 子ウィンドウをテストするために追加されたテスト変数*/
varparentVairous = "親ウィンドウのグローバル変数を呼び出す IFrame 子ウィンドウをテストするために追加されたテスト変数";
関数parentInvokeIFrame()
{
var iframeTest = document.frames["iframeTest"] //document.getElementById("iframeTest"); を使用することもできます。
アラート(iframeTest.document.body.innerHTML);
アラート(iframeTest.iFrameVair);
}
</script>
</head>
<本文>
<form name="form1" id="form1">
<input type="text" name="ユーザー名" id="ユーザー名"/>
<input type = "button" value = "親ウィンドウは IFrame 子ウィンドウのコンテンツを呼び出します" onclick = 'parentInvokeIFrame()'/>
</form>
<iframe src="b.html" width = '100%' id = 'iframeTest'></iframe>
</body>
</html>
1.b.html
HTMLコード
<html>
<頭>
<タイトル></タイトル>
<script type="text/javascript">
/** IFrame 子フォームのグローバル関数を呼び出す親フォームをテストするために追加された子ウィンドウ グローバル関数*/
var iFrameVair = "親フォームをテストして、IFrame 子フォームのグローバル関数を呼び出す";
functionUpdateParent()
{
var _parentWin = window.parent;
_parentWin.form1.username.value = "xxxx" ;
}
関数 childInvokeParent()
{
varparentVairous = window.parent.window.parentVairous;
アラート(親Vairous);
}
</script>
</head>
<本文>
<form name="form1" id="form1">
<p> </p>
<p align="center">
<入力タイプ = "ボタン"
名前 = "ボタン"
id = "ボタン"
value = "メインページの UserName コンテンツを更新"
onclick = "UpdateParent()">
<入力タイプ = "ボタン"
名前 = "ボタン2"
id = "ボタン2"
value = "IFrame 子ウィンドウをテストして、親ウィンドウのグローバル変数を呼び出す"
onclick = "childInvokeParent();"/>
</p>
<p> </p>
</form>
</body>
</html>
ps:ドメインを越えて取得することはできません。例えばiframeのsrcが「http://www.xxx.ccc/」の場合は取得できません。
2: window.opener は、親ページ オブジェクト インスタンス アドレスを呼び出す window.open によって開かれる子ページです: http://www.cnspry.cn/blog/attachments/window.opener instance/a.html
ソースコード:
2.a.html
HTMLコード
<html>
<頭>
<title>メインページ</title>
<script type="text/javascript">
/** 親ウィンドウのグローバル変数を呼び出す IFrame 子ウィンドウをテストするために追加されたテスト変数*/
varparentVairous = "親ウィンドウのグローバル変数を呼び出す IFrame 子ウィンドウをテストするために追加されたテスト変数";
/**
※IFrameとは異なるため(IFrameにはIDがあり、window.open()はIFrameの親子ウィンドウとはモードが異なります)、
* したがって、新しいウィンドウが window.open() メソッドを通じて開かれるとき、新しいウィンドウのオブジェクトが存在する必要があります
* もちろん、サブウィンドウ内の変数を呼び出す前に、まずサブウィンドウがポップアップする必要があります。そうしないと、例外がスローされます。
*/
varOpenWindow;
関数openSubWin()
{
OpenWindow = window.open('b.html', 'newwindow', '高さ=1024、幅=1300、上=0、左=0、ツールバー=いいえ、メニューバー=はい、スクロールバー=はい、サイズ変更可能=はい、場所=いいえ、ステータス=いいえ');
}
関数parentInvokeChild()
{
if(OpenWindow)//もちろん、サブウィンドウ内の変数を呼び出す前に、最初にサブウィンドウがポップアップする必要があります。そうしないと、例外がスローされます。
{
アラート(OpenWindow.iFrameVair);
}
}
</script>
</head>
<本文>
<form name="form1" id="form1">
<input type="text" name="ユーザー名" id="ユーザー名"/>
<input type="button" value="サブページをポップアップする" onclick = "openSubWin()">
<input type="button" value="ポップアップ ウィンドウでグローバル変数の呼び出しをテストする" onclick = "parentInvokeChild()">
</form>
</body>
</html>
2.b.html
HTMLコード
<html>
<頭>
<title>サブページ</title>
<script type="text/javascript">
/** IFrame 子フォームのグローバル関数を呼び出す親フォームをテストするために追加された子ウィンドウ グローバル関数*/
var iFrameVair = "親フォームをテストして、IFrame 子フォームのグローバル関数を呼び出す";
functionUpdateParent()
{
var _parentWin = ウィンドウ.オープナー;
_parentWin.form1.username.value = "xxxx" ;
}
関数 childInvokeParent()
{
varparentVairous = window.opener.window.parentVairous;
アラート(親Vairous);
}
</script>
</head>
<本文>
<form name="form1" id="form1">
<p> </p>
<p align="center">
<input type="ボタン"
onclick = "UpdateParent();"
名前=「ボタン」
id="ボタン"
value="メイン ページの UserName コンテンツを更新">
<入力タイプ = "ボタン"
名前 = "ボタン2"
id = "ボタン2"
value = "IFrame 子ウィンドウをテストして、親ウィンドウのグローバル変数を呼び出す"
onclick = "childInvokeParent();"/>
</p>
<p> </p>
</form>
</body>
hanjs によって思い出された後、モーダル ウィンドウの子ウィンドウは親ウィンドウ ページのコンテンツを変更できないことに注意することが非常に重要です。
たとえば、次のように変更します。 OpenWindow = window.open('b.html', 'newwindow', 'height=1024, width=1300, top=0, left=0, toolsbar=no, menubar=yes, スクロールバー=yes,サイズ変更可能 = はい、場所 = いいえ、ステータス = いいえ');
対象: OpenWindow = window.showModalDialog("b.html",'newwindow',"dialogHeight:100px,center:yes,resizable:no,status:no");
親ウィンドウの内容を子ウィンドウで変更したい場合、「XX」が空かオブジェクトではないというエラーが表示されますが、ここの「XX」が変更したい親ウィンドウの内容です。