如果子窗口已关闭,父窗口是否可以注意到?

时间:2011-01-17 01:49:50

标签: javascript popupwindow

我有parent window (opener)child (popup)

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

让我们说,在父页面中,我有js函数hello()

为了让孩子在关闭子窗口时调用父亲的hello()并传递参数,我可以这样做,

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

这将关闭窗口并调用parent的hello();

但如果我不想在子页面中使用代码window.opener.hello()怎么办?我的意思是我希望代码只在父页面中

我能想到的一件事是:

有些父母知道孩子何时关闭(事件监听器???在js中不确定)     但在这种情况下如何收到论点? (即从孩子那里得到的一些数据)

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分:2)

您可以从父级

onunload事件附加到子窗口