Подтвердить что ты не робот

Есть ли способ в javascript определить, вызвано ли событие выгрузки обновлением, кнопкой "Назад" или закрытием браузера?

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

  • Обновление страницы
  • Кнопка "Назад" (или переход от страницы)
  • Закрытие браузера

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

Цель: Когда клиент выполняет обновление нашего программного обеспечения, обновление перенаправляет свой первый запрос на Интернет на страницу предложения. Существует кнопка для опции "Не беспокоить", но некоторые пользователи просто закрывают браузер. При закрытии браузера мне нужно дублировать функцию "Не беспокоить", чтобы пользователь больше не перенаправлялся на страницу предложения. Простое присоединение к событию "разгрузка" не будет работать из-за разных способов выхода из страницы.

4b9b3361

Ответ 1

Нет, и если бы это было, зависит от браузера. Какой код вы пытаетесь запустить, когда пользователь закрывает страницу? Выйти из системы пользователь? Тогда пользователь не будет выходить из системы, если браузер сработает или произойдет сбой сетевого соединения (и, вероятно, нет, если компьютер переходит в режим сна/спящего режима).

Если для целей выхода из системы вы, вероятно, должны использовать переменную timestamp на сервере, которая обновляется с каждым запросом (или использует ajax-ping) и выходит из системы, если она не была обнаружена в течение определенного времени.

Обновление: найдено этот ответ здесь, в stackoverflow.

Ответ 2

Да, есть решение!

Я разработал решение, основанное на событиях onBeforeUnload + onLoad, локальном хранилище HTML5 и связи между клиентом и сервером. Подробнее см. fooobar.com/questions/16351/....

Ответ 3

Я использую метод "обнюхивания" клавиатуры, поскольку он ищет keydown из "F5", "ctrl + r", "alt-f4", "backspace" и других, и если он обнаруживает, что они протекают очереди событий клавиатуры, он устанавливает логические переменные соответствующим образом, чтобы уловить этот статус... затем я использую обработчик функции "onbeforeunload", который проверяет эти логические переменные состояния, чтобы решить, что делать.

Вы можете даже отключить различные нажатия клавиш (например, "ctrl + n" или "F1" ), используя в вашей клавиатуре функции preventDefault(), bubbles = false и returnValue = false.

Этот материал не для слабонервных, но, безусловно, он способен с некоторой настойчивостью и множеством кросс-браузеров!