beforeunload — событие перед выгрузкой в JavaScript

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

Прежде чем веб-страница и ее ресурсы будут выгружены, запускается событие beforeunload. В это время веб-страница все еще видна, и у вас есть возможность отменить мероприятие.

Чтобы зарегистрироваться на событие beforeunload, вы используете метод window.addEventListener() :

window.addEventListener('beforeunload',(event) =>{
    // do something here
});

Поскольку window является глобальным объектом, его можно опустить следующим образом:

addEventListener('beforeunload',(event) =>{
    // do something here
});

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

Если вы подтвердите, браузер перенаправит вас на новую страницу. В противном случае он отменит навигацию.

В соответствии со спецификацией вам необходимо вызвать метод preventDefault() внутри обработчика событий beforeunload, чтобы отобразить диалоговое окно подтверждения. Однако не все браузеры реализуют это:

addEventListener('beforeunload',(event) => {
    event.preventDefault();
});

Исторически сложилось так, что некоторые браузеры позволяют отображать собственное сообщение в диалоговом окне подтверждения. Это было предназначено для информирования пользователей о том, что они потеряют данные, если уйдут. К сожалению, эта функция часто используется для обмана пользователей. В результате пользовательское сообщение больше не поддерживается.

В соответствии со спецификацией HTML вызовы alert(), confirm() и prompt() игнорируются в обработчике событий beforeunload.

Пример

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

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>JS beforeunload Event</title>
</head>

<body>
    <a href="https://www.javascripttutorial.net/">JavaScript Tutorial</a>
    <script>
        window.addEventListener('beforeunload',(event) => {
            event.preventDefault();
            // Google Chrome requires returnValue to be set.
            event.returnValue = '';
        });
    </script>
</body>

</html>

Заключение

  • Событие beforeunload запускается перед выгрузкой веб-страницы и ее ресурсов.
  • Используйте beforeunload, чтобы подтвердить, действительно ли пользователи хотят покинуть страницу, чтобы предотвратить потерю данных.
Рейтинг
( Пока оценок нет )
Александр Русаков / автор статьи
Программист, разработчик, 12 лет опыта работы в крупных компаниях. Быстро освоил typescript, делюсь своими знаниями на страницах этого сайта.
Загрузка ...
JavaScript и TypeScript