Событие onbeforeunload не запускается в Chrome Инкогнито - PullRequest
5 голосов
/ 14 февраля 2020

Я пытался отправить маяк на beforeunload, и, похоже, он работает практически во всех современных браузерах, кроме Chrome в режиме инкогнито.

Этот код работает во всех современные браузеры, кроме Chrome в режиме инкогнито:

window.onbeforeunload = function() {
    navigator.sendBeacon("url");
}

Кажется, даже этот код не работает:

window.onbeforeunload = function() { 
    console.log('before unload') 
}

Я что-то не так делаю или это просто Chrome виноват?

1 Ответ

0 голосов
/ 24 февраля 2020

Какие у вас настройки (SO, Chrome версия)?

Вкл. Chrome 80.0.3987.116 / Ubuntu 64 и Chrome 79.0.3945.130 / Windows 10 приведенный ниже фрагмент работает без ошибок:

window.addEventListener('beforeunload', (event) => {
  console.log("BEFORE")
  navigator.sendBeacon("http://www.google.it");
  // Cancel the event as stated by the standard.
  event.preventDefault();
  // Chrome requires returnValue to be set.
  event.returnValue = '';
});

Экран запроса (в режиме инкогнито), отправленного до выгрузки:

enter image description here Кроме того, уведомление:

Для боя нежелательные всплывающие окна, некоторые браузеры не отображают подсказки, созданные в обработчиках событий до загрузки, если с страницей не взаимодействовали. Более того, некоторые не отображают их вообще.

Ссылка: https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onbeforeunload

...