Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Корректный уход с сайта (https://javascript.ru/forum/events/18802-korrektnyjj-ukhod-s-sajjta.html)

AndreyS 17.07.2011 19:03

Так это нажатие клавиатуры...

Появляется окно с вопросом "Покинуть страницу?", если юзер жмет "Покинуть", при закрытии страницы выполнить скрипт.
Нужно поймать кнопку "Покинуть", и написать ей обработчик.

Вот как к именно этой кнопке обратиться?

Gozar 17.07.2011 21:53

AndreyS,
Зачем насиловать пользователей, представь что при нажатии пульта телевизора он начнет тебя спрашивать уверен ли ты или реклама поинтересуется в себе ли ты?

AndreyS 18.07.2011 00:02

Дело в том что это интернет чат.


Когда человек заходит в чат, в БД ставится флаг что он online.
В главном окне есть список "Пользователи online".

Проблема в том что человек может просто закрыть страницу или перейти на другой сайт.

Как это отловить и убрать его из online???

Подскажите пожалуйста может есть какой-нибудь другой способ это сделать!! А то я уже не знаю что делать...

trikadin 18.07.2011 00:07

Например: каждые n секунд браузер посылает на сервер сообщение. Типа "Я онлайн!". Если в течении n секунд на сервер сообщение не приходит - то делаешь пользователя оффлайн.

P. S. Не уверен, что это лучший способ)

AndreyS 18.07.2011 00:32

А можно пожалуйста по подробнее.

Как браузер посылает это сообщение?
Хотя бы на словах, а то не совсем понял как это должно происходить.

trikadin 18.07.2011 00:37

Аякс...

А можно поподробнее, как вы чат без аякса пишете?

kobezzza 18.07.2011 00:43

Цитата:

А можно поподробнее, как вы чат без аякса пишете?
Ну ну почему, всё можно) Раньше большинство чатов были на фреймах, где просто был статичный рефреш странички. Да и до появления AJAX люди его эмулировали. У меня есть здоровенная книга Томаса Паула "AJAX" и там целая часть посвящена тому, как раньше люди делали - куча способов и каждый оригинальней и чуднее другого)

К примеру, запрашиваем у сервера картинку с помощью img, а на самом деле кидаем ему запрос, а он ответом генерит прозрачную картинку и по её высоте мы определяем, что он нам сказал :D

AndreyS 18.07.2011 01:18

У меня есть небольшая часть c Ajax.
Не понятна сама идея. Как браузер может знать Online или нет.

Сейчас значение "online" у меня хранится в БД. Мой блок обновляется каждые 5 сек. и шлет запрос к БД.
А как браузер может сам определять это не понятно.

kobezzza 18.07.2011 01:26

Ну самый простой вариант - это polling: раз скажем в 5 минут посылаешь запрос серву, мол "привет, я всё ещё онлайн". Если делать понтовей, то можно сделать сокет.

trikadin 18.07.2011 01:29

Цитата:

Сообщение от AndreyS
Как браузер может знать Online или нет.

Всё просто. Если ты на странице - браузер шлёт запросы. Если ты не на странице - то нет. Утрированный пример:

setInterval(function(){alert("Ты тут!")}, 5000);

Цитата:

Сообщение от kobezzza
К примеру, запрашиваем у сервера картинку с помощью img, а на самом деле кидаем ему запрос, а он ответом генерит прозрачную картинку и по её высоте мы определяем, что он нам сказал

Это офигенно. Это круто.


Часовой пояс GMT +3, время: 14:53.