Jquery: выгрузить или загрузить?

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

Точная обработка события разгрузки варьируется от версии к версии браузеры. Например, некоторые версии Firefox запускает событие, когда ссылка, но не тогда, когда окно закрыто. В практическом использовании, поведение должно быть проверено на всех поддерживаемых браузеров и с проприетарной предварительной загрузкой событие.

Должен ли я использовать событие beforeunload? Надежность?

Ответы

Ответ 1

Да, beforeunload более надежный, но обязательно назначьте его напрямую (не связанный через jQuery), например:

window.onbeforeunload = function() { /* do stuff */ };

Событие unload само по себе не предназначалось для выполнения работы, а только для очистки объектов... поскольку сборщики мусора становятся все лучше и лучше, есть меньше причин для браузера даже запускать событие unload.

Также имейте в виду, что для вашего конкретного случая вам нужно будет сделать синхронный запрос на сервер... иначе браузер все равно не будет ждать завершения вызова AJAX.