Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 04.08.2010, 00:37
Интересующийся
Отправить личное сообщение для onejsquestion Посмотреть профиль Найти все сообщения от onejsquestion
 
Регистрация: 27.07.2009
Сообщений: 24

Кроссбраузерный onBeforeUnload
Уважаемые форумчане!
Может кто-нибудь знает, как можно выполнить функцию по закрытии страницы в любом браузере?
Как вариант можно обращаться через небольшие интервалы к функции до тех пор, пока страница не закроется, но на это нет ресурсов, т.к. функция делает запрос на сервер.
Необходимо подсчитать время, проведенное юзером на сайте. Интересно, как это делают системы подсчета статистики, типа ли.ру и аналитика.. может кто в курсе, поделитесь, пожалуйста, информацией.
Спасибо!
Ответить с цитированием
  #2 (permalink)  
Старый 04.08.2010, 00:41
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

Сообщение от onejsquestion
Необходимо подсчитать время, проведенное юзером на сайте.
запишите в куку время, когда он зашел на страницу.
затем, раз в секунду в другую куку пишите текущее время.
при загрзке следующей страницы, будет передана информация о времени проведенном на текущей странице
Ответить с цитированием
  #3 (permalink)  
Старый 04.08.2010, 00:48
Интересующийся
Отправить личное сообщение для onejsquestion Посмотреть профиль Найти все сообщения от onejsquestion
 
Регистрация: 27.07.2009
Сообщений: 24

Дело в том, что даже если и не будет загрузки следующей страницы, информацию о времени пребывания посетителя на текущей странице необходимо получить.
Ответить с цитированием
  #4 (permalink)  
Старый 04.08.2010, 01:35
Профессор
Отправить личное сообщение для Маэстро Посмотреть профиль Найти все сообщения от Маэстро
 
Регистрация: 02.07.2010
Сообщений: 642

Сообщение от onejsquestion Посмотреть сообщение
... но на это нет ресурсов, т.к. функция делает запрос на сервер.
Что-то я не очень понял эту фразу. У кого нет ресурсов? На что?
Событие закрытия броузера Вы не отследите, потому что его нет. Также как и выключения интернета у пользователя и выключения им компьютера из розетки.
Но есть способ отслеживать активность пользователя и время его пребывания на сайте. С какой точностью это надо делать? Предположим с точностью 1 минута. Тогда на каждой странице должна быть функция, посылающая сигнал на сервер раз в минуту "я жив". Вот по последней метке можно определить, когда Клиент отключился.
Ответить с цитированием
  #5 (permalink)  
Старый 04.08.2010, 11:25
Интересующийся
Отправить личное сообщение для onejsquestion Посмотреть профиль Найти все сообщения от onejsquestion
 
Регистрация: 27.07.2009
Сообщений: 24

Это, как вариант я оговорил в первом посте, но он достаточно ресурсоемкий в данной задаче будет, в том смысле, что нагрузка на сервер будет большая от таких частых запросов*количество сайтов*количество посетителей этих сайтов, тем более, что точность до секунды нужна (ну +/- несколько секунд). Понятно, что можно реализовать серверную часть красиво и с умом, но все же хочется знать, а вдруг есть более изящное решение, не требующее таких затрат.

Последний раз редактировалось onejsquestion, 04.08.2010 в 11:30.
Ответить с цитированием
  #6 (permalink)  
Старый 04.08.2010, 13:29
Профессор
Отправить личное сообщение для Маэстро Посмотреть профиль Найти все сообщения от Маэстро
 
Регистрация: 02.07.2010
Сообщений: 642

Не знаю, что Вы называете "более изящным", т.к. у каждого свой вкус...
Решения есть разные. Возможная альтернатива - это WebSockets.
Новое веяние от Гугл. Почитать можно здесь: http://habrahabr.ru/blogs/webdev/41223/
Ответить с цитированием
  #7 (permalink)  
Старый 04.08.2010, 14:48
Интересующийся
Отправить личное сообщение для onejsquestion Посмотреть профиль Найти все сообщения от onejsquestion
 
Регистрация: 27.07.2009
Сообщений: 24

То, что надо! Спасибо огромное!
Ответить с цитированием
  #8 (permalink)  
Старый 10.08.2010, 13:07
Новичок на форуме
Отправить личное сообщение для MainBuh Посмотреть профиль Найти все сообщения от MainBuh
 
Регистрация: 05.08.2010
Сообщений: 7

Сообщение от Маэстро
его нет. Также как и выключения интернета у пользователя
Прошу разрешить маленькое дополнение - появились два новых события offline и online (для FF проверял - работает правдо с не существенной задержкой)
Ответить с цитированием
  #9 (permalink)  
Старый 10.08.2010, 19:34
Аватар для subzey
Пионэр
Отправить личное сообщение для subzey Посмотреть профиль Найти все сообщения от subzey
 
Регистрация: 16.11.2009
Сообщений: 1,322

В Опере onbeforeunload, насколько я помню, срабатывает только при переходе по внутренней ссылке.

Вебсокетов, емнимс, в ней тоже нет.

Если уж настолько нужно отслеживать время пребывания пользователя, могу лишь посоветовать лонг-поллы.

Кстати, есть готовые сервисы типа веб-визора.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не кроссбраузерный скрипт [LEX] Javascript под браузер 9 30.06.2009 18:56
onbeforeunload Snipe Opera, Safari и др. 9 20.05.2009 00:15