web-dev-qa-db-ja.com

window.opener / window.parent / window.topを使用する場合

JavaScriptでwindow.opener/window.parent/window.topを使用する場合

84
Sriram
  • window.openerは、window.open( ... )を呼び出したウィンドウを参照して、呼び出し元のウィンドウを開きます
  • window.parentは、<frame>または<iframe>内のウィンドウの親を参照します
  • window.topは、<iframe>サブウィンドウの1つ以上のレイヤーにネストされたウィンドウの最上位ウィンドウを指します

それらは、参照ウィンドウの状況に関係ない場合、null(またはundefined)になります。 (「参照ウィンドウ」とは、コンテキストでJavaScriptコードが実行されるウィンドウを意味します。)

148
Pointy

質問にコンテキストを追加する必要があると思います。ただし、これらの事柄に関する基本的な情報はここにあります。

window.openerhttps://developer.mozilla.org/en-US/docs/Web/API/Window.opener

ユーザー入力を必要とし、メインウィンドウに情報を戻す必要があるダイアログとして機能する新しいウィンドウを開くときに、ほとんどwindow.openerを使用しました。ただし、これはOriginポリシーによって制限されているため、ダイアログのコンテンツとオープナーウィンドウの両方が同じOriginからロードされるようにする必要があります。

window.parenthttps://developer.mozilla.org/en-US/docs/Web/API/Window.parent

私は、それらを含むウィンドウオブジェクトと通信する必要があるIFrameを操作するときに主にこれを使用しました。

window.tophttps://developer.mozilla.org/en-US/docs/Web/API/Window.top

これは、トップレベルのブラウザウィンドウと対話していることを確認するのに役立ちます。他のサイトがあなたのウェブサイトをiframeするのを防ぐために使用できます。

質問にさらに詳細を追加する場合、他のより関連する例を提供できます。

UPDATE:状況に対処する方法はいくつかあります。
次の構造があります。

  • メインウィンドウ
    • ダイアログ1
      • ダイアログ2ダイアログ1で開く

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を使用してメインウィンドウ、ウィンドウオブジェクトを参照できるようになります。

お役に立てれば。

21
Mark At Ramp51

top、parent、opener(およびwindow、self、およびiframe)はすべてウィンドウオブジェクトです。

  1. window.opener->は、現在のポップアップウィンドウを開くまたは起動するウィンドウを返します。
  2. window.top->は、一番上のウィンドウを返します。フレームを使用している場合、これはフレームセットウィンドウです。フレームを使用していない場合、これはwindowまたはselfと同じです。
  3. window.parent->は、現在のフレームまたはiframeの親フレームを返します。親フレームは、フレームセットウィンドウまたはネストされたフレームがある場合は別のフレームです。フレームを使用しない場合、親は現在のウィンドウまたは自己と同じです
5
Ravish

ポップアップを扱う場合、window.openerは重要な役割を果たします。親ページと子ページのフィールドを処理する必要があるため、親ページで値を使用する必要がある場合、window.openerを使用するか、何らかのデータが必要ですロード時の子ウィンドウまたはポップアップウィンドウで、window.openerを使用して値を再度設定できます。

1
Dugen Master