Вот моя «потребность» - у меня есть пользователь, открывающий окно с отображенным документом, мне нужно регистрировать количество времени, в течение которого у пользователя это окно «в фокусе» или «открыто» ... ЕСЛИ пользователь просматривает другое окно, я хочу прекратить регистрировать время - и возобновить регистрацию, если они перефокусируются на этой странице ... в основном я хочу "знать", сколько времени потребовалось пользователю, чтобы прочитать страницу.
это сценарий типа обзора, в котором пользователи являются «доверенными» участниками, которым необходимо регистрировать свое время ... Я хочу оставить «промежуточный итог» только для справки - так что если пользователь говорит, что потратил 10 минут , на странице, но мой журнал показывает, что окно было открыто только в течение 2 минут, я знаю, что у меня есть проблема ... или с моим кодом или с моими людьми ..;)
Я думал, чтобы счетчик js работал, когда страница была в фокусе, пауза при размытии или при закрытии, и Ajax данные возвращался в мою базу данных ... и добавлял любое последующее время в эту запись, если пользователь вернется. ..
onUnload, похоже, не работает, по крайней мере, когда я пытаюсь - плюс он не улавливает закрытие браузера ... поэтому я подумал, что мог бы открыть НОВОЕ окно, когда окно документа закрыто (не надоедать - но сделать запись звонка на сервер, а потом закрыть себя).
У кого-нибудь есть решение для этого? Я знаю, что все это похоже на «плохой» дизайн, но если у кого-то есть «правильный» способ справиться с этим сценарием - пожалуйста, скажите мне. (Кстати, IE является требованием - это требование IE7 на основе интрасети.)
Thx
======== пример кода ниже - это "не" работает ... вроде ============
Когда я говорю, что это НЕ работает, это то, что я имею в виду ... «XMLHttpRequest» создается, я предполагаю, потому что ответ - это ожидаемое сообщение - ОДНАКО журнал не изменяется (я знаю, вы скажете это страница php, но если я вызываю URL-адрес напрямую - он работает нормально ... так что это не страница входа в систему, ДОПОЛНИТЕЛЬНО 60 секунд setInterval (), кажется, срабатывает случайным образом, потому что мое уведомление об ответе просто всплывает, иногда 10 в строка без промежутка времени, конечно, не с регулярными 60-секундными интервалами ... МЫСЛИ?
<script type="text/javascript">
var closeMe = 0;
var logMe = 0;
//the window doesn't have focus, do nothing or something that let's them know we're not logging at the moment
function onBlur() {
//after 2 min of non focus, close it.
closeMe = setInterval('window.close()',120000); //after 2 min of non focus, close it.
};
//the window has focus... keep logging.
function onFocus(){
//stop the close counter - in the event to 'blurred' sometime
clearInterval ( closeMe );
//run the AJAX on a schedule - we're doing it every minute - bu tyou can do it as often as you like
logMe = setInterval('logTime()',60000);
};
//call a script that logs another minute...
function logTime() {
var xhReq = new XMLHttpRequest();
xhReq.open("GET", "ajax-on-time-interval.php", false);
xhReq.send(null);
var serverResponse = xhReq.responseText;
alert(serverResponse);
}
// check for Internet Explorer... IE uses 'onfocusin/out" - everything else uses "onfocus/blur"
if (/*@cc_on!@*/false) {
document.onfocusin = onFocus;
document.onfocusout = onBlur;
} else {
window.onfocus = onFocus;
window.onblur = onBlur;
}
</script>