Вход

Просмотр полной версии : onbeforeunload - Обработка двух ситуаций


coll3ctor
18.06.2013, 12:23
Всем доброго времени суток! Передо мною стоит задача узнать, онлайн пользователь или нет (я тут всё упростил, у меня на самом деле не пользователь и т.п.; в общем, главное суть).

В общем, я хочу при закрытии человеком вкладки или браузера, ловить этот момент и 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, чтобы обработать только случай ухода пользователя со страницы.

Надеюсь, мой вопрос понятен, жду помощи

danik.js
18.06.2013, 15:30
Ты не успеешь отослать запрос при закрытии вкладки. Более того, такого события нет в Опере, поэтому на него пологаться особо не стоит. Особенно если учесть что браузер (или даже операционка) может крэшнуться или комп выдернуться из розетки (знаю людей, которые практикуют такой способ выключения PC: «А что? Ему ничего же не будет!»).
Стандартный метод - пинговать сервер аяксом каждые n секунд. Перестал юзер пинговать - значит отвалился, определяешь его как оффлайн.

bes
18.06.2013, 20:01
вдобавок invalidate() его сессию и уже гарантированно отвалился :)