我想在页面操作或浏览器操作弹出窗口关闭时触发一些代码。我尝试在onunload
或onbeforeunload
上收听<body>
和window
个事件,但他们从未触发过。
答案 0 :(得分:6)
这是一个错误,但铬开发人员发布了一个解决方法。
答案 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倍)