Я хочу вызвать некоторый код, когда действие страницы или всплывающее окно браузера закрываются. Я пробовал слушать onunload
и onbeforeunload
событий на <body>
или window
, но они никогда не стреляют.Как определить, когда всплывающее окно действия закрывается?
4
A
ответ
6
Это ошибка, но разработчик хрома опубликовал обходное решение.
1
Как кажется, нет прямого решения, это то, что я сделал, если кому-то интересно.
Периодически пинговая фоновая страница из всплывающего окна, и если фоновая страница не получена в течение некоторого периода времени, она вызывает требуемое действие. Работает как бомба замедленного действия :)
На фоне страницы:
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 раза быстрее, чем "триггер" времени в фоновом режиме страницы)
Хотя я действительно надеюсь, что есть лучший ответ (а если нет, то мы должны подать ошибку), это довольно крутой хак. Переключатель мертвого человека: http://en.wikipedia.org/wiki/Dead_man's_switch – npdoty