Есть события unload
и beforeunload
javascript, но они ненадежны для запроса Ajax (не гарантируется, что запрос, инициированный в одном из этих событий, достигнет сервера).
Поэтому делать это настоятельно не рекомендуется, и вы должны искать альтернативу.
Если вам это определенно нужно, рассмотрите «пинговое» решение. Отправляйте запрос каждую минуту, в основном говоря серверу «Я все еще здесь». Затем, если сервер не получает такой запрос более двух минут (вы должны учитывать задержки и т. Д.), Вы считаете, что клиент офлайн.
Другое решение было бы используйте unload
или beforeunload
для выполнения запроса Sjax (синхронный JavaScript и XML), но это совершенно не рекомендуется. Выполнение этого будет в основном заморозить браузер пользователя до тех пор, пока запрос не будет завершен, что им не понравится (даже если запрос занимает мало времени).