Найти в Дзене
Nuances of programming

Как отследить событие закрытия браузера и вкладки с помощью JavaScript

Источник: Nuances of Programming

Чтобы отследить событие закрытия браузера и вкладки в JavaScript, выполните следующие действия.

  1. Добавьте слушатель события beforeunload к глобальному window-объекту.
  2. В этом слушателе вызовите метод preventDefault() для переданного ему Event-объекта.
  3. Установите свойство returnValue этого Event-объекта в пустую строку ('').
window.addEventListener('beforeunload', (event) => {
event.preventDefault();
event.returnValue = '';
});

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

Использование метода addEventListener() позволит прикрепить обработчик события к любым DOM-объектам, таким как HTML-элементы, HTML-document и window-объект.

Событие beforeunload запускается непосредственно перед тем, как window, document и его ресурсы будут выгружены. В этот момент document все еще виден, и событие все еще можно отменить.

Необходимо вызвать метод preventDefault() для Event-объекта, который получает обработчик, чтобы отобразить диалоговое окно подтверждения в браузере. Метод preventDefault() предотвращает действие события по умолчанию. Для события beforeunload метод preventDefault() останавливает выгрузку ресурсов, window и document.

Этот код JavaScript приведет к отображению диалогового окна подтверждения, когда пользователь попытается закрыть браузер или вкладку. Вот пример HTML-кода, написанного с использованием JavaScript.

<!DOCTYPE html>
<html lang="en">
<head>
<title>Coding Beauty Tutorial</title>
<link rel="stylesheet" href="index.css" />
</head>
<body>
<a href="codingbeautydev.com">Coding Beauty</a>
<br />
Try to close the tab or browser
<script src="index.js"></script>
</body>
</html>
При попытке закрыть вкладку отображается диалоговое окно подтверждения
При попытке закрыть вкладку отображается диалоговое окно подтверждения
При попытке закрыть браузер отображается диалоговое окно подтверждения
При попытке закрыть браузер отображается диалоговое окно подтверждения

Обратите внимание, что событие beforeunload срабатывает не только при закрытии браузера или вкладки, но и при нажатии на ссылку, отправке формы, нажатии кнопок назад/вперед и обновлении страницы.

При нажатии на ссылку на странице отображается диалоговое окно подтверждения
При нажатии на ссылку на странице отображается диалоговое окно подтверждения
Когда пользователь пытается обновить страницу, отображается диалоговое окно подтверждения
Когда пользователь пытается обновить страницу, отображается диалоговое окно подтверждения

Читайте также:

Читайте нас в Telegram, VK

Перевод статьи Coding Beauty: How to Detect a Browser or Tab Close Event With JavaScript