window.onbeforeunload: не назначено, если я не установил точку останова - PullRequest
0 голосов
/ 31 января 2019

Я пытаюсь установить довольно общий обработчик 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 ', когда она останавливается.ПОТОМ это работает.

Image of the console

Я совершенно уверен, что вопрос «что не так» бессмысленен, поэтому я спрашиваю: «А вы?У меня есть какой-нибудь совет, как мне найти причину проблемы? ".

Интересно, проблема в сфере?2-е сообщение в журнале всегда говорит, что onbeforeunload не равно нулю ... Но window является глобальным, не так ли, и как отладчик может это исправить?

ПРИМЕЧАНИЯ:

  • jQuery доступен, но использование $(window).on('beforeunload' подвержено тем же проблемам, что и этот код

  • добавление задержки (setTimeout) для установки обработчиканет помощи;пробовал 2, 4 и 9 секунд

  • добавление рекурсивного вызова для добавления обработчика каждые 4 секунды, пока страница открыта, не приводит к установке обработчика: window.onbeforeunload возвращает NULL вконсоль все время

  • периодически, я видел основной метод jQuery, прикрепленный к событию, но редко

...