Лучший способ определить, когда пользователь покидает веб-страницу?

195

Как лучше всего определить, покидает ли пользователь веб-страницу?

onunloadСобытие JavaScript не работает каждый раз , когда (запрос HTTP занимает больше времени , чем время , необходимое для завершения браузер).

Возможно, его создание будет заблокировано текущими браузерами.

ANaimi
источник

Ответы:

219

Попробуйте onbeforeunloadсобытие: оно запускается непосредственно перед выгрузкой страницы. Это также позволяет вам спросить, действительно ли пользователь хочет уйти. Посмотрите демо на сайте до загрузки .

Кроме того, вы можете отправить запрос Ajax, когда он уходит.

Андреас Петерссон
источник
3
Было бы хорошо для пользователя, если бы вы отслеживали, изменилась ли форма, и только запрашивали, если это изменилось - так что это не раздражает.
adam0101
3
Также обратите внимание, что различные мобильные браузеры игнорируют результат события (то есть они не запрашивают у пользователя подтверждения). Firefox имеет скрытое предпочтение в about: config, чтобы сделать то же самое. По сути это означает, что пользователь всегда подтверждает, что документ может быть выгружен.
MJB
2
Обратите внимание, что этот метод также вызывается, когда пользователь обновляет страницу или отправляет форму.
Зайцев Дмитрий
@ Андреас Петерссон, у меня та же проблема с целью пропустить сеанс пользователя. Как я могу получить введенный URL-адрес, чтобы проверить, принадлежит ли он проекту?
Jcc.Sanabria