| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > JavaScript: Общие вопросы > Как отловить закрытие браузера? |
| Автор: Штык 10.10.2006, 22:33 |
| собстно сабж.. все морочусь с чатом(AJAx юзаю) и вот собстно встал вопрос как отследить еси юзер не нажал кнопку выход а просто закрыл браузер? прочел тут похожие темы но так и не нашел можно ли при отлове закрытия выполнить некий скрипт? типа сказать серваку что все юзер ушел.. |
| Автор: Aliance 10.10.2006, 23:29 |
| onunload - но оно срабатывает даже если пользователь перешел на другую страницу. |
| Автор: sergejzr 11.10.2006, 11:19 |
| Самый верный способ - переодически сообщать серверу, что юзер "живой". Например раз в 10 сек. аяксом запрос слать. |
| Автор: pythonwin 11.10.2006, 12:49 |
| а может прописать в куках и + проверять onunload? |
| Автор: Штык 11.10.2006, 20:50 | ||||
то есть каждые 10 сек шлю серву что пользователь жив и продлеваю жисть куки.. и время последнего обновления записываю так? а так же пробегаюсь по тем кто в сети и смарю еси время обновления больше заданного лимита то юзер мертв так?а этот вариант не оч грузить серв буит?
хмм тож хороший вариант.. так что оптимальнее буит?конечно попробую и то и то но хотелось бы мнение спецов узнать |
| Автор: GoodBoy 12.10.2006, 13:16 | ||
и при пропуске 3 запросов считать, что узер ушел! я именно так и делал... |
| Автор: anka 2.11.2006, 13:40 |
| <body onunload = "document.location = 'test.php'"> |
| Автор: R.M. 2.11.2006, 16:49 |
| Ещё можно юзать onbeforeunload оно при переходе по вкладкам не срабатывает. Только он вроде в опере не работает |
| Автор: GoodBoy 3.11.2006, 12:07 |
| anka, это будет срабатывать не только при закрытии браузера, но и при любом переходе со страницы на страницу! |
| Автор: Elfet 16.3.2009, 23:30 |
| Можно ли как-нибудь очистить событие onunload - например как на Gmail что бы спрашивало, точно ли вы хотите уйти со страницы? |
| Автор: EDELWEISS 24.3.2009, 20:42 |
| http://www.citforum.ru/internet/javascript/jsevent.shtml |
| Автор: IDVsbruck 25.3.2009, 02:35 |
| Как раз сейчас занимаюсь поиском и апробацией технологии Comet/Bayeux - для чатов самое оно. Так вот там даже есть реакция сервера, когда он не просто ERROR, но еще и DISCONNECT или SESSIONCLOSE (и еще парочка). Причем, отлавливает событие мгновенно и без участия кода на клиентской стороне. В последнем релизе Jetty я видел клинтский и серверный код реализации чата (с использованием dojo или jquery). Также буквально сегодня видел реализацию чата на html-php с использованием этой технологии. |
| Автор: Elfet 25.3.2009, 10:27 |
| IDVsbruck, что это за технология? Comet/Bayeux? |
| Автор: IDVsbruck 25.3.2009, 14:43 |
| Comet - технология, так называемый server-pushing ... http://en.wikipedia.org/wiki/Comet_(programming) Bayeux - протокол, сертифицированный создателями dojo. Он же Cometd. http://cometdproject.dojotoolkit.org/book/export/html/3 нашел полное описание протокола. Еще можешь посмотреть технологию Continuations от Mortbay - так называемый server-polling. Возможно, для чатов это будет даже удобнее. Напоминает обычный опрос клиентом сервер ajax'ом, только ответ приходит с сервера не мгновенно, а как только на сервере появится событие (чей-то пост в твоем случае) или по таймауту, который выставляется. Само собой, свой пост также является событием. Сервер как бы задерживает response. Технология очень интересна тем, что на клиенте, в отличие от предыдущих технологий, не надо вообще ничего делать или добавлять - просто когда получаем ответ, тут же посылаем новый запрос. Реализации встречал кроме своей Java также на PHP, Perl и Python. |