Я создаю реализацию тестирования для своего класса (я учитель средней школы) и пытаюсь определить, покидает ли кто-то страницу, потому что он использует другую вкладку (visibilitychange) или другое приложение. (размытие) или переход на другую страницу на этой вкладке. В Chrome работает отлично. В Safari (MacOS) работает нестабильно.
https://sandbox-transparent-weaver.glitch.me/index.html
У меня получил
Код: Выделить всё
window.addEventListener("blur", function () {
console.log("Blurred");
});
который работает точно так, как ожидалось, когда я размываю страницу, но она все равно видна
Код: Выделить всё
window.addEventListener("visibilitychange", function () {
console.log("Change Vis");
});
который работает точно так, как ожидалось, когда я использую другую вкладку
Моя проблема заключается в следующем:
Код: Выделить всё
window.addEventListener("beforeunload", function () {
event.preventDefault();
console.log("Before Unload");
});
Это работает, но только в ограниченных случаях. Он эффективно работает для обновления, закрытия вкладок и отправки формы, но совершенно не работает для нажатия ссылки на странице, выбора закладки или ввода нового URL-адреса на панели навигации.
Помогите, пожалуйста?!
Подробнее здесь:
https://stackoverflow.com/questions/793 ... vanilla-js