JavaScriptでは際に使用しますかwindow.opener
/ window.parent
/ window.top
?
回答:
window.opener
呼び出し元のウィンドウwindow.open( ... )
を開くために呼び出されたウィンドウを指しますwindow.parent
<frame>
またはのウィンドウの親を参照します<iframe>
window.top
<iframe>
サブウィンドウの1つ以上のレイヤーにネストされたウィンドウの最上位のウィンドウを指しますそれらは、参照ウィンドウの状況に関連しない場合null
(またはおそらくundefined
)になります。(「参照ウィンドウ」とは、JavaScriptコードが実行されるコンテキストを持つウィンドウを意味します。)
window.open()
ページ送信時に使用する子を開くメインページがあります。今、この子ウィンドウは、同じwindow.open()
閉じる自己を持つ別の子ウィンドウを開きます。次に、2番目の子(最初の子はもう存在しない)を送信すると、メインページのページ要素にアクセスしたいと思います。最初の子供がもういないときに、これは2番目の子供から可能ですか?
window.opener.opener
、中間ページがなくなる前に取得する必要があります。
質問にいくつかのコンテキストを追加する必要があると思います。ただし、これらの基本的な情報はここにあります。
window.opener
https://developer.mozilla.org/en-US/docs/Web/API/Window.opener
ユーザー入力を必要とし、情報をメインウィンドウに返す必要があるダイアログとして機能する新しいウィンドウを開くときに、ほとんどwindow.openerを使用しました。ただし、これはオリジンポリシーによって制限されているため、ダイアログのコンテンツとオープナーウィンドウの両方が同じオリジンからロードされるようにする必要があります。
window.parent
https://developer.mozilla.org/en-US/docs/Web/API/Window.parent
私は主に、IFrameを含むウィンドウオブジェクトと通信する必要があるIFrameを操作するときにこれを使用しました。
window.top
https://developer.mozilla.org/en-US/docs/Web/API/Window.top
これは、最上位のブラウザウィンドウと対話していることを確認するのに役立ちます。他のサイトがあなたのウェブサイトを改ざんすることを防ぐためにそれを使用することができます。
質問にさらに詳細を追加すると、より関連性の高い他の例を提供できます。
更新:
状況に対処する方法はいくつかあります。
次の構造があります。
Dialog 1がDialog 2を開くコードを実行するとき、Dialog 2を作成した後、Dialog 1に、Dialog1オープナーを参照するDialog 2のプロパティを設定させます。
したがって、「子ウィンドウ」がダイアログ2のウィンドウオブジェクトの変数であり、「ウィンドウ」がダイアログ1のウィンドウオブジェクトの変数である場合。ダイアログ2を開いた後、ダイアログ1を閉じる前に、次のような割り当てを行います。
childwindow.appMainWindow = window.opener
上記の割り当てを行ったら、ダイアログ1を閉じます。次に、ダイアログ2内で実行されているコードから、を使用window.appMainWindow
してメインウィンドウであるウィンドウオブジェクトを参照できるようになり
ます。
お役に立てれば。
window.open()
ページ送信時に使用する子を開くメインページがあります。これで、この子ウィンドウは、同じwindow.open()
閉じる自己を持つ別の子ウィンドウを開きます。次に、2番目の子(最初の子はもう存在しない)を送信すると、メインページのページ要素にアクセスしたいと思います。最初の子供がもういないときに、これは2番目の子供から可能ですか?
top、parent、opener(およびwindow、self、iframe)はすべてwindowオブジェクトです。
window.opener
->現在のポップアップウィンドウを開く、または起動するウィンドウを返します。window.top
->最上位のウィンドウを返します。フレームを使用している場合、これはフレームセットウィンドウです。フレームを使用していない場合、これはウィンドウまたはセルフと同じです。window.parent
->現在のフレームまたはiframeの親フレームを返します。親フレームは、フレームセットウィンドウか、ネストされたフレームがある場合は別のフレームです。フレームを使用しない場合、親は現在のウィンドウまたは自分と同じです