【发布时间】:2010-09-13 11:58:06
【问题描述】:
我想在弹出窗口关闭时引发事件,或者最好在关闭之前引发事件。我将弹出窗口对象存储为一个对象,但我不知道有什么方法可以绑定到关闭事件或窗口关闭之前的事件。
var popupWindow = window.open("/popup.aspx", "popupWindow", "height=550,width=780");
有什么方法可以使用 jQuery 订阅 close 事件,或者只是原始的 javascript?我正在使用 jQuery 并且不能添加另一个库,所以如果不能在 jQuery 中完成,我将不得不以某种方式滚动我自己的事件系统,以便它可以在所有浏览器上工作。
更新:
我尝试在 jQuery 中使用 unload 事件,由于某种原因,当我的弹出窗口打开而不是关闭时,该事件就会引发。如果我使用 Firebug 设置断点来延迟订阅 unload 事件,则 unload 事件按预期方式工作,但无论出于何种原因,当允许 javascript 自然执行时,它就无法正常工作。
var popupWindow = window.open("/popup.aspx", "popupWindow", "height=550,width=780");
$(popupWindow.window).unload(function() { alert('hello'); });
有人知道为什么在加载窗口时会引发卸载事件吗?
另一个问题是,我注意到 jQuery 的“卸载”事件不会像我通常那样订阅窗口:
popupWindow.onunload = function(){alert('hello')};
似乎每次引发事件时都会取消订阅。这应该发生吗?如果不是因为 jQuery 中的这个错误(或功能?),那么在加载时引发事件就很好了,因为我可以检查事件内部的 popupWindow.closed 属性以确保窗口真的关闭了。
【问题讨论】:
标签: javascript jquery