Закрытие браузера не вызывает изменение видимости в сафари

Я пытаюсь сохранить статистику, когда пользователь закрывает браузер, ниже приведен код

    if (typeof document.hidden !== 'undefined') { // Opera 12.10 and Firefox 18 and later support
      hidden = 'hidden';
      visibilityChange = 'visibilitychange';
    } else if (typeof document.mozHidden !== 'undefined') {
      hidden = 'mozHidden';
      visibilityChange = 'mozvisibilitychange';
    } else if (typeof document.msHidden !== "undefined") {
      hidden = 'msHidden';
      visibilityChange = 'msvisibilitychange';
    } else if (typeof document.webkitHidden !== 'undefined') {
      hidden = 'webkitHidden';
      visibilityChange = 'webkitvisibilitychange';
    } else {
      console.log('in else condition');
    }

if (typeof document.addEventListener === 'undefined' || hidden === undefined) {
      console.log("App requires a browser, such as Google Chrome or Firefox, that supports the Page Visibility API.");
    } else {
      document.addEventListener(visibilityChange, handleVisibilityChange, false);
    }

 function handleVisibilityChange() {
// Send a ajax call with **async: false**
}

Приведенный выше код хорошо работает в Mozilla Firefox, Google Chrome, но не в Safari. Я тестирую это на Mac Os, и версия сафари Version 12.1.1 (14607.2.6.1.1)

Может ли кто-нибудь предложить, если это ожидаемое поведение в сафари и что можно сделать в качестве обходного пути.

Благодарю.

1 ответ

Согласно документам MDN, для этого должно работать событие «скрыть страницу»:

Если вы специально пытаетесь обнаружить события выгрузки страницы, событие pagehide — лучший вариант.

https://developer.mozilla.org/en-US/docs/Web/API/Window/pagehide_event

Другие вопросы по тегам