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