7

私は持っていparent window (opener)ますchild (popup)

----------                      --------------
|         |                     |            |
| parent  | -----> opens popup  |  child     |
|         |                     |            |
-----------                     --------------

たとえば、親ページにjs関数がありますhello()

子ウィンドウが閉じているときに子が親のhello()を呼び出し、引数を渡すために、次のことができます。

window.close();
window.opener.hello(someArgument);

これにより、ウィンドウが閉じ、親のhello()も呼び出されます。

しかし、子ページにコードwindow.opener.hello()を含めたくない場合はどうなりますか?つまり、コードを親ページにのみ配置する必要があります

私が考えることができる1つのことは次のとおりです。

ある程度親は子供がいつ閉じられるかを知っています(イベントリスナー??? jsではわかりません)しかし、そのような場合、どのように引数を受け取るのですか?(つまり、子供から戻ってきたデータ)

4

2 に答える 2

6

onunload明らかな解決策(ポップアップウィンドウオブジェクトにイベントハンドラープロパティを追加する)は、IEでは機能しません。ただし、使用attachEventはIEで機能するため、次のように機能します。

var win = window.open("popup.html");

function doStuffOnUnload() {
    alert("Unloaded!");
}

if (typeof win.attachEvent != "undefined") {
    win.attachEvent("onunload", doStuffOnUnload);
} else if (typeof win.addEventListener != "undefined") {
    win.addEventListener("unload", doStuffOnUnload, false);
}

ポップアップウィンドウでメインウィンドウに情報を渡す場合は、ポップアップのwindowオブジェクトにプロパティを配置することをお勧めします(例window.someValue = 5;)。で、そのdoStuffOnUnload()プロパティを取得できます。alert(win.someValue);

于 2011-01-17T09:58:56.637 に答える
2

onunload親から子ウィンドウにイベントを添付できます

于 2011-01-17T01:55:09.517 に答える