103

JavaScriptでいつ使用するwindow.openerwindow.parent// window.top

4

4 に答える 4

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

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

于 2012-07-03T14:34:05.660 に答える
26

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

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

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

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

更新: 状況を処理する方法がいくつかあります。
次の構造があります。

  • メインウィンドウ
    • ダイアログ 1
      • ダイアログ 2 はダイアログ 1 によって開かれました

ダイアログ 1 がコードを実行してダイアログ 2 を開く場合、ダイアログ 2 を作成した後、ダイアログ 1 に、Dialog1 オープナーを参照するダイアログ 2 のプロパティを設定させます。

したがって、「childwindow」がダイアログ 2 ウィンドウ オブジェクトの変数であり、「window」がダイアログ 1 ウィンドウ オブジェクトの変数である場合。ダイアログ 2 を開いた後、ダイアログ 1 を閉じる前に、次のような割り当てを行います。

childwindow.appMainWindow = window.opener

window.appMainWindow上記の割り当てを行った後、ダイアログ 1 を閉じます。次に、ダイアログ 2 内で実行されているコードから、メイン ウィンドウ、ウィンドウ オブジェクトを参照するために使用できるはずです 。

お役に立てれば。

于 2012-07-03T14:35:49.573 に答える
6

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

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

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

于 2014-06-21T11:34:49.920 に答える