Время пребывания на странице
Привет. Хочу отправлять запрос со временем пребывания юзера на странице. Пришёл к этому
var old = ""; var current = window.location.href; var vt = (new Date).getTime(); var ts = Math.round(vt/1000); var sec = ts % 60; function changeUrl(current){ if(current != old){ alert(sec); old = current; } old = window.location.href; setInterval(function() { changeUrl(window.location.href); }, 1000); } changeUrl(); Но при переходе на другую страницу время продолжает добавляться к предыдущему. Понимаю, что надо в какой то момент отнять какое то время, но не могу понять когда и что. |
Когда пользователь уйдет на другую страницу, скрипт пропадет.
setInterval каждый раз запускает бесконечную последовательность вызовов функций. |
Цитата:
|
Я думаю в момент перехода на другую страницу
|
Цитата:
var old = ""; var current = window.location.href; function changeUrl(current,sec){ if(current != old){ alert(sec); old = current; } old = window.location.href; setTimeout(function() { var vt = (new Date).getTime(); var ts = Math.round(vt/1000); var sec = ts % 60; changeUrl(window.location.href,sec); }, 1000); } changeUrl(); Теперь sec undrfined) |
Ну вроде что то получается.
date = new Date(); start = date.getTime(); function init() { var time = new Date(); return (time.getTime() - start) / 1000; } function getTime() { var ts = Math.round(init()); var sec = ts % 60; var this_sec = "" + ((sec > 9) ? sec : "0" + sec); changeUrl(window.location.href, this_sec); setTimeout(function () { getTime(this_sec) }, 1000); } var old = ""; var current = window.location.href; function changeUrl(current, this_sec) { if (current != old) { var sec = localStorage.getItem('lsec') alert(sec)// тут вместо alert() отправлю запрос old = current; } localStorage.setItem('lsec',this_sec); old = window.location.href; } getTime() |
Один баг. old всегда пустая. И получается, что при перезагрузки страницы запрос тоже отправляется. А не должен.
|
Просто отмечать начальное время, когда пользователь приходит на страницу, и засекать время, когда уходит.
Разницу между временами посылать в запросе на сервер. |
Цитата:
|
Если надо учитывать сколько времени пользователь просматривал страницу, то наверно надо учитывать только то время, когда вкладка была активна. Если пользователь смотрел другую вкладку, минимизировал окно, переключился на другую задачу, то это не то время, что он смотрел страницу.
Что бы учесть все эти варианты надо использовать событие visibilitychange и смотреть когда вкладка становится активной и когда становится невидимой. https://developer.mozilla.org/en-US/...tychange_event Ну и если надо послать запрос на сервер с указанием сколько времени пользователь провел на странице, то это можно по событию unload послать запрос с помощью navigator.sendBeacon https://developer.mozilla.org/en-US/...tor/sendBeacon |
Часовой пояс GMT +3, время: 06:51. |