是否有可能用javascript打开弹出窗口,然后检测用户什么时候关闭它?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (23)

这个问题几乎全部都在标题中。

是否有可能(以及如何?)打开JavaScript的弹出窗口,然后检测用户什么时候关闭它?

我在项目中使用jQuery,所以jQuery解决方案会很好。

提问于
用户回答回答于

如果您可以控制弹出窗口的内容,请处理窗口的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);
用户回答回答于

扫码关注云+社区