我有parent window (opener)
和child (popup)
---------- --------------
| | | |
| parent | -----> opens popup | child |
| | | |
----------- --------------
让我们说,在父页面中,我有js函数hello()
为了让孩子在关闭子窗口时调用父亲的hello()并传递参数,我可以这样做,
window.close();
window.opener.hello(someArgument);
这将关闭窗口并调用parent的hello();
但如果我不想在子页面中使用代码window.opener.hello()怎么办?我的意思是我希望代码只在父页面中
我能想到的一件事是:
有些父母知道孩子何时关闭(事件监听器???在js中不确定) 但在这种情况下如何收到论点? (即从孩子那里得到的一些数据)
答案 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
事件附加到子窗口