Различайте события перезагрузки/обновления/F5 браузера и закрытия
Всем Привет,
Я столкнулся с ситуацией, когда пользователь хочет показать сообщение при обновлении браузера или закрытии браузера.
Это я сделал с помощью события onbeforeunload, которое вызывается при обновлении браузера или явном закрытии.
В моем приложении я использую локальное хранилище для сохранения состояния страницы, то есть получаю одни и те же данные с одной и той же страницей во время обновления. Так что я могу получить данные из локального хранилища.
Но когда я явно закрываю браузер, то в этом случае я хочу очистить ключи локального хранилища с помощью метода localStorage.clear ().
Но я не могу отслеживать события close, а также refresh/F5, потому что событие onbeforeunload вызывается для обоих действий.
Я попробовал погуглить, что позволяет нам загружать/onunload события, но они также не работают.
Когда я обновляю браузер/закрываю браузер, он должен запросить подтверждающее сообщение
1). когда нажимаете кнопку "остаться на странице", то ничего не делаете.
2). Когда вы нажимаете кнопку "покинуть эту страницу", то я хочу проверить, происходит ли обновление браузера или вызывается кнопка закрытия, и соответственно я хочу очистить локальное хранилище.
Это означает, что если вы обновитесь, то не очистите локальное хранилище. Однако закрытые затем очищают локальные ключи хранения.
Я также использовал хранилище сеансов, но мое требование-использовать локальное хранилище.
Так как же достичь вышеперечисленных сценариев:-
Мой код находится ниже:-
$(window).on('mouseover', (function () { window.onbeforeunload = null; })); $(window).on('mouseout', (function () { window.onbeforeunload = ConfirmLeaveMessage; })); function ConfirmLeaveMessage() { //return undefined; return "Are you sure you want to leave this page without saving?"; }
Что я уже пробовал:
Я попробовал вышеописанную функцию.
Даже попробовал события window.onload и window.onunload. Но ни один из них не работает по моему сценарию.