如何检测动作弹出窗口何时关闭?

时间:2010-10-11 15:50:57

标签: google-chrome-extension

我想在页面操作或浏览器操作弹出窗口关闭时触发一些代码。我尝试在onunloadonbeforeunload上收听<body>window个事件,但他们从未触发过。

2 个答案:

答案 0 :(得分:6)

这是一个错误,但铬开发人员发布了一个解决方法。

http://crbug.com/31262#c13

答案 1 :(得分:1)

看起来没有直接的解决方案,如果有兴趣的话,这就是我最终做的事情。

定期从弹出窗口ping背景页面,如果在一段时间内未收到ping背景页面,则会触发所需的操作。像定时炸弹一样工作:)

在后台页面中:

var timeoutId = 0;
function popupPing() {
    if(timeoutId != 0) {
        clearTimeout(timeoutId);
    }

    timeoutId = setTimeout(function() {
        popupClosed();
        timeoutId = 0;
    }, 1000);
}

function popupClosed() {
    //...
}

在弹出窗口中:

ping();
function ping() {
    chrome.extension.getBackgroundPage().popupPing();
    setTimeout(ping, 500);
}

(请注意,弹出窗口比后台页面中的“触发”时间快2倍)