Закрытие браузера не вызывает изменение видимости в сафари
Я пытаюсь сохранить статистику, когда пользователь закрывает браузер, ниже приведен код
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