如果您可以控制弹出窗口的内容,请在该窗口中处理窗口的
unload事件,并通过
opener属性通知原始窗口,首先检查打开器是否已关闭。请注意,这在Opera中并不总是有效。
window.onunload = function() { var win = window.opener; if (!win.closed) { win.someFunctionToCallWhenPopUpCloses(); }};由于该
unload事件将在用户每次离开弹出窗口中的页面时触发,而不仅仅是关闭窗口时触发,因此您应该检查弹出窗口在以下位置是否确实已关闭
someFunctionToCallWhenPopUpCloses:
var popUp = window.open("popup.html", "thePopUp", "");function someFunctionToCallWhenPopUpCloses() { window.setTimeout(function() { if (popUp.closed) { alert("Pop-up definitely closed"); } }, 1);}如果您无法控制弹出窗口的内容,或者您的目标浏览器之一不支持该
unload事件,则可以在主窗口中使用某种轮询解决方案。调整间隔以适合。
var win = window.open("popup.html", "thePopUp", "");var pollTimer = window.setInterval(function() { if (win.closed !== false) { // !== is required for compatibility with Opera window.clearInterval(pollTimer); someFunctionToCallWhenPopUpCloses(); }}, 200);


