Форум dkLab и Denwer
Здесь общаются Web-разработчики.
Генеральный спонсор:
Хостинг «Джино»

Вызов функции перед закрытием окна (kpobococ)
Author Message
kpobococ
Заглянувший



Joined: 23 Jan 2007
Posts: 15
Карма: 0
   поощрить/наказать


PostPosted: Tue Feb 20, 2007 7:36 pm (написано за 1 минуту 42 секунды)
   Post subject: Вызов функции перед закрытием окна
Reply with quote

Вкратце - есть чат, использующий AJAX запросы для обновления. Нужно, чтобы если пользователь вздумает уйти со страницы (или закрыть окно), то отправлялся AJAX запрос. Сам JavaScript код запроса я написать могу, проблема у меня с тем, к какому event'у прикрепить вызов функции.
Back to top
View user's profile Send private message
dimagolov
Участник форума



Joined: 04 Feb 2007
Posts: 1664
Карма: 96
   поощрить/наказать

Location: Christ Church, Barbados

PostPosted: Tue Feb 20, 2007 7:48 pm (спустя 12 минут; написано за 4 минуты 41 секунду)
   Post subject:
Reply with quote

если это надо для того чтобы показывать что пользователь ушел, то это не правильно.
при работе клиента он регулярно дергает сервер и именно его активность/не активность в течении определенного периода скажет серверу есть он в чате или его нету.
а если он по power-off тачку опустит, то что, вечно залагиненым останется? а если у него просто dial-up умрет, то ловление событий на клиенте не поможет серверу понять что а отряде таки есть потеря бойца, так что "отряд не заметит".
если считаешь, что это сильно геморойно контролировать кто как давно проявлял активность то быстро сталкнешься с граблями и будет кака а не чат :)
Back to top
View user's profile Send private message
kpobococ
Заглянувший



Joined: 23 Jan 2007
Posts: 15
Карма: 0
   поощрить/наказать


PostPosted: Wed Feb 21, 2007 10:52 am (спустя 15 часов 4 минуты; написано за 6 минут 29 секунд)
   Post subject:
Reply with quote

dimagolov wrote:
если это надо для того чтобы показывать что пользователь ушел, то это не правильно.
при работе клиента он регулярно дергает сервер и именно его активность/не активность в течении определенного периода скажет серверу есть он в чате или его нету.
а если он по power-off тачку опустит, то что, вечно залагиненым останется? а если у него просто dial-up умрет, то ловление событий на клиенте не поможет серверу понять что а отряде таки есть потеря бойца, так что "отряд не заметит".
если считаешь, что это сильно геморойно контролировать кто как давно проявлял активность то быстро сталкнешься с граблями и будет кака а не чат :)
Контроль по тайм-ауту уже давно написан. Это скорее дополнение, которое позволяет более эффективно работать с пользователями. При таком подходе при корректном выходе из чата будет оставлено сервисное сообщение в потоке чата.
Back to top
View user's profile Send private message
Никита Косолaпов
Участник форума



Joined: 08 Aug 2006
Posts: 172
Карма: 9
   поощрить/наказать

Location: Москва

PostPosted: Wed Feb 21, 2007 12:58 pm (спустя 2 часа 6 минут; написано за 1 минуту 45 секунд)
   Post subject:
Reply with quote

А что Вы вкладываете в понятие "корректный выход из чата"?
закрытие окна браузера? переход на другой адрес в том же окне? Выдергивание шнура питания из розетки? Обрубание топором кабеля интернета? Или все же нажатие на кнопочку с надписью "Выход"?
Back to top
View user's profile Send private message Send e-mail
Владимир Хоменко
Участник форума



Joined: 11 Jun 2004
Posts: 427
Карма: 42
   поощрить/наказать

Location: Николаев, Украина

PostPosted: Wed Feb 21, 2007 4:06 pm (спустя 3 часа 7 минут; написано за 1 минуту 29 секунд)
   Post subject:
Reply with quote

Ну что Вы к человеку прицепились? Ничего зазорного в желании получать уведомления о переходе на другую страницу нет.

kpobococ, смотрите onbeforeunload
Back to top
View user's profile Send private message Send e-mail
kpobococ
Заглянувший



Joined: 23 Jan 2007
Posts: 15
Карма: 0
   поощрить/наказать


PostPosted: Wed Feb 21, 2007 4:37 pm (спустя 31 минуту; написано за 4 минуты 16 секунд)
   Post subject:
Reply with quote

Никита Косолaпов wrote:
А что Вы вкладываете в понятие "корректный выход из чата"?
закрытие окна браузера? переход на другой адрес в том же окне? Выдергивание шнура питания из розетки? Обрубание топором кабеля интернета? Или все же нажатие на кнопочку с надписью "Выход"?
Нажатие на кнопку выход, вызов спецкоманды чата /exit.
Также закрытие окна и переход на другую страницу, если смогу прицепить выход из чата на какое-нибудь событие.
Владимир Хоменко wrote:
Ну что Вы к человеку прицепились? Ничего зазорного в желании получать уведомления о переходе на другую страницу нет.
kpobococ, смотрите onbeforeunload
Спасибо. Один вопрос: есть какие-нибудь различия в добавлении eventListener'а на это событие в IE, Firefox и Опере? Потому что они меня уже задолбали своими различиями))
Back to top
View user's profile Send private message
kpobococ
Заглянувший



Joined: 23 Jan 2007
Posts: 15
Карма: 0
   поощрить/наказать


PostPosted: Thu Mar 01, 2007 2:17 pm (спустя 7 дней 21 час 39 минут; написано за 3 минуты 51 секунду)
   Post subject:
Reply with quote

Владимир Хоменко wrote:
kpobococ, смотрите onbeforeunload
Прошу прощения, перерыл весь Gecko DOM Reference (developer.mozilla.org/en/docs/Gecko_DOM_Reference) но так и не нашел описания этого события. По поиску выдает только какую-то таблицу, полезность которой в данном контексте нулевая. Не могли бы вы привести пример добавления Event Listener'а для этого event'а для IE и Firefox?
Back to top
View user's profile Send private message
Г.О.
Участник форума



Joined: 22 Feb 2006
Posts: 378
Карма: 13
   поощрить/наказать

Location: Ленинград

PostPosted: Thu Mar 01, 2007 3:11 pm (спустя 54 минуты; написано за 1 минуту 1 секунду)
   Post subject:
Reply with quote

А onUnload тоже не нашли или он по каким-то причинам не удовлетворил?
Все onBefore... события — IE-only, насколько знаю.
Back to top
View user's profile Send private message
AKS
Участник форума



Joined: 28 Dec 2005
Posts: 1174
Карма: 102
   поощрить/наказать


PostPosted: Thu Mar 01, 2007 4:22 pm (спустя 1 час 10 минут; написано за 1 минуту 48 секунд)
   Post subject:
Reply with quote

Г.О.
В современной "лисичке" есть onbeforeunload. В Opera - нет. В Opera даже unload сработает лишь при переходе с одной страницы на другую. А вот при закрытии (это ведь одно из пожеланий автора темы) не будет срабатывать. Так что идея может быть реализована лишь частично...
Back to top
View user's profile Send private message Send e-mail
kpobococ
Заглянувший



Joined: 23 Jan 2007
Posts: 15
Карма: 0
   поощрить/наказать


PostPosted: Thu Mar 01, 2007 7:37 pm (спустя 3 часа 15 минут; написано за 2 минуты 29 секунд)
   Post subject:
Reply with quote

Quote:
В современной "лисичке" есть onbeforeunload. В Opera - нет. В Opera даже unload сработает лишь при переходе с одной страницы на другую. А вот при закрытии (это ведь одно из пожеланий автора темы) не будет срабатывать. Так что идея может быть реализована лишь частично...
Думаю, я могу пожертвовать оперой в данном случае, реализовав лишь то, что она позволяет. Опера вообще некорректно работает с моим чатом, потому что не может правильно работать с параметром стиля overflow-y элемента. А между тем, этот параметр критичен для работы моего чата, потому что фреймы я делать не намерен.

Спасибо всем за ответы, буду реализовывать
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic All times are GMT + 3 Hours
Page 1 of 1    Email to a Friend.
You cannot post new topics in this forum. You cannot reply to topics in this forum. You cannot edit your posts in this forum. You cannot delete your posts in this forum. You cannot vote in polls in this forum. You cannot attach files in this forum. You can download files in this forum.
XML