Я пытаюсь установить довольно общий обработчик OnBeforeUnload:
console.log("WCW - Setting browser warning message");
window.onbeforeunload = function(e) {
e.returnValue = "confirmationMessage";
return e.returnValue;
};
console.log("WCW - onbeforeunload is " +
((window.onbeforeunload ? "set":"still null")));
Я понимаю, что все, что я могу сделать, это дать браузеру сигнал выдать довольно общее предупреждение.В следующей итерации я могу попытаться выполнить некоторую самоочищение перед выдачей return
.
. Моя проблема в том, что window.onbeforeunload
всегда возвращает null
в журнале консоли после выполнения этого кода UNLESS Я устанавливаю точку останова на любую строку (например, первое сообщение журнала) и затем просто ' continue ', когда она останавливается.ПОТОМ это работает.
Я совершенно уверен, что вопрос «что не так» бессмысленен, поэтому я спрашиваю: «А вы?У меня есть какой-нибудь совет, как мне найти причину проблемы? ".
Интересно, проблема в сфере?2-е сообщение в журнале всегда говорит, что onbeforeunload
не равно нулю ... Но window
является глобальным, не так ли, и как отладчик может это исправить?
ПРИМЕЧАНИЯ:
jQuery доступен, но использование $(window).on('beforeunload'
подвержено тем же проблемам, что и этот код
добавление задержки (setTimeout
) для установки обработчиканет помощи;пробовал 2, 4 и 9 секунд
добавление рекурсивного вызова для добавления обработчика каждые 4 секунды, пока страница открыта, не приводит к установке обработчика: window.onbeforeunload
возвращает NULL вконсоль все время
периодически, я видел основной метод jQuery, прикрепленный к событию, но редко