标题中几乎所有问题。
是否可以(以及如何?)用JavaScript打开弹出窗口,然后检测用户何时关闭它?
我在项目中使用jquery,所以jquery解决方案会很好。干杯!
如果您可以控制弹出窗口的内容,请在该窗口中处理窗口的unload事件,并通过opener属性通知原始窗口,首先检查打开器是否已关闭。请注意,这在Opera中并不总是有效。
unload
opener
window.onunload = function() { var win = window.opener; if (!win.closed) { win.someFunctionToCallWhenPopUpCloses(); } };
由于该unload事件将在用户每次离开弹出窗口中的页面时触发,而不仅仅是关闭窗口时触发,因此您应该检查弹出窗口在以下位置是否确实已关闭someFunctionToCallWhenPopUpCloses:
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);