【发布时间】:2014-10-12 12:08:44
【问题描述】:
我有一个可以打开多个窗口的 Web 应用程序。我遇到的问题是,当父窗口关闭/刷新时,子窗口仍然打开。
我试过使用onunload 和onbeforeunload,但它们都没有捕捉到窗口关闭事件(在 Chrome 和 Firefox 中)。
我有一个窗口数组,但刷新后对它们的引用丢失了。
还有其他方法可以捕捉到这个事件吗?
这是我与关闭窗口相关的代码(在unload 和onbeforeunload 之外运行closeAll() 会关闭我所有打开的窗口,但在页面刷新时不会关闭):
window.unload = function() {
closeAll();
}
window.onbeforeunload = function() {
closeAll();
}
var closePopup = function(popup) {
removePopup(popup);
popup.close();
};
var closeAll = function() {
for (var popup in _this.popups) {
closePopup(_this.popups[popup]);
}
}
这仅适用于 Chrome,但不适用于 Firefox 和 IE(最新版本)。
【问题讨论】:
-
“我尝试过使用 onunload 和 onbeforeunload,但它们都没有捕获窗口关闭事件(在 Chrome 和 Firefox 中)”
onbeforeunload在 Firefox 和 Chrome 中绝对有效. -
“没有一个 [caught] the window close event”表明您的代码有问题,因为 T.J. Crowder 指出,它们确实在那些命名的浏览器中工作。你能告诉我们你的尝试吗,那么我们也许可以提供帮助。
-
看来这段代码可以在 Chrome 上运行,但不能在 Firefox 和 IE 上运行。在这些事件之外测试了
closeAll函数,它可以工作。我还在 SO 上找到了多个参考,它不适用于 Firefox 和其他浏览器stackoverflow.com/questions/14645011/…stackoverflow.com/questions/20773306/…
标签: javascript