我希望在一个弹出窗口被关闭时或最好是在关闭之前触发一个事件。我将弹出窗口对象存储为一个对象,但我不知道如何绑定到关闭事件,或者在窗口关闭之前触发一个事件。
var popupWindow = window.open("/popup.aspx", "popupWindow", "height=550,width=780");
有没有办法使用jQuery或原生javascript订阅关闭事件?我正在使用jQuery,并且不能添加另一个库,因此如果无法在jQuery中完成,则必须自己编写事件系统,以便它可以跨所有浏览器工作。
更新:
我尝试在jQuery中使用unload事件,但由于某种原因,该事件在我的弹出窗口打开时就被触发,而不是在关闭时。如果我使用Firebug设置断点来延迟订阅卸载事件,卸载事件会按预期工作,但出于某种原因,当JavaScript允许自然执行时,它无法正常工作。
var popupWindow = window.open("/popup.aspx", "popupWindow", "height=550,width=780");
$(popupWindow.window).unload(function() { alert('hello'); });
有人知道为什么在窗口加载时会引发unload事件吗?
另一个问题是我注意到,如果只是这样做,jQuery的"unload"事件不会像通常那样保持订阅窗口:
popupWindow.onunload = function(){alert('hello')};
每次触发事件时似乎都会取消订阅。这样做是有意为之吗?如果不是jQuery中的这个错误(或特性?),那么在加载时触发事件将是很好的,因为我可以在事件内部检查 popupWindow.closed
属性以确保窗口真正关闭。