I have parent window (opener)
and child (popup)
---------- --------------
| | | |
| parent | -----> opens popup | child |
| | | |
----------- --------------
假设,在父页面中,我有 js 函数hello()
为了让子窗口在子窗口关闭时调用父窗口的 hello() 并传递参数,我可以这样做,
window.close();
window.opener.hello(someArgument);
这将关闭窗口并调用父级的 hello();
但是如果我不想在子页面中包含 window.opener.hello() 代码怎么办?我的意思是我希望代码仅位于父页面中
我能想到的一件事是:
父级在某种程度上知道子级何时关闭(事件侦听器???在js中不确定)但是在这种情况下如何接收参数? (即从孩子那里返回的一些数据)
显而易见的解决方案(添加一个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;
). In doStuffOnUnload()
,然后您可以获取该属性:alert(win.someValue);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)