Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 18.06.2013, 12:23
Новичок на форуме
Посмотреть профиль Найти все сообщения от coll3ctor
 
Регистрация: 11.04.2013
Сообщений: 1

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

Надеюсь, мой вопрос понятен, жду помощи
Ответить с цитированием
  #2 (permalink)  
Старый 18.06.2013, 15:30
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Ты не успеешь отослать запрос при закрытии вкладки. Более того, такого события нет в Опере, поэтому на него пологаться особо не стоит. Особенно если учесть что браузер (или даже операционка) может крэшнуться или комп выдернуться из розетки (знаю людей, которые практикуют такой способ выключения PC: «А что? Ему ничего же не будет!»).
Стандартный метод - пинговать сервер аяксом каждые n секунд. Перестал юзер пинговать - значит отвалился, определяешь его как оффлайн.
Ответить с цитированием
  #3 (permalink)  
Старый 18.06.2013, 20:01
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

вдобавок invalidate() его сессию и уже гарантированно отвалился
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Некорректная обработка двух форм на странице bnr17 Events/DOM/Window 6 11.02.2013 03:50
Обработка нажатия двух клавиш 12345678 Events/DOM/Window 1 15.01.2013 15:41
Обработка onbeforeunload Mel Internet Explorer 1 27.12.2012 14:58
Обработка нажатия на элемент и его родитель klev2004 Общие вопросы Javascript 3 12.12.2012 20:07
обработка одновременно двух клавиш клавиатуры Destrifer Events/DOM/Window 8 20.12.2008 15:25