onbeforeunload - Обработка двух ситуаций
Всем доброго времени суток! Передо мною стоит задача узнать, онлайн пользователь или нет (я тут всё упростил, у меня на самом деле не пользователь и т.п.; в общем, главное суть).
В общем, я хочу при закрытии человеком вкладки или браузера, ловить этот момент и AJAX'ом посылать запросик на то, чтобы в БД установить одно из его полей для данного юзера is_online=0. Но, вот в чём проблема: window.onbeforeunload = function (evt) { var message = "Вы уходите, а явсё знаю"; if (typeof evt == "undefined") { evt = window.event; } if (evt) { evt.returnValue = message; } return message; } Данный код, всего лишь оповестит пользователя об уходе и я не смогу узнать: правда ли он ушёл или же, всё же, решил остаться на странице. А мне надо бы, так же как и у функции confirm, чтобы обработать только случай ухода пользователя со страницы. Надеюсь, мой вопрос понятен, жду помощи |
Ты не успеешь отослать запрос при закрытии вкладки. Более того, такого события нет в Опере, поэтому на него пологаться особо не стоит. Особенно если учесть что браузер (или даже операционка) может крэшнуться или комп выдернуться из розетки (знаю людей, которые практикуют такой способ выключения PC: «А что? Ему ничего же не будет!»).
Стандартный метод - пинговать сервер аяксом каждые n секунд. Перестал юзер пинговать - значит отвалился, определяешь его как оффлайн. |
вдобавок invalidate() его сессию и уже гарантированно отвалился :)
|
Часовой пояс GMT +3, время: 04:16. |