Вот моя «необходимость» - у меня есть пользователь, открывающий окно с отображаемым документом, мне нужно записать количество времени, которое пользователь имеет в этом окне «в фокусе» или « открыт "... ЕСЛИ пользователь просматривает другое окно, я хочу прекратить протоколировать время - и возобновить ведение журнала, если они снова сосредоточится на этой странице ... В основном я хочу« знать », сколько времени потребовалось пользователю для чтения стр.Annoying Popup - (или другое более изящное решение)
это сценарий типа обзора, в котором пользователи являются «доверенными» членами, которым необходимо регистрировать свое время ... Я хочу сохранить «общее количество» только для справки, поэтому, если пользователь говорит, что потратил 10 мин, на странице, но мой журнал показывает, что окно было открыто только на 2 минуты, я знаю, что у меня проблема ... с моим кодом или с моими людьми ..;)
Я думал, что нужно сохранить js counter, когда страница была в фокусе, пауза на размытии или при закрытии и Ajax данные обратно на мой db ... и добавляет любое последующее время к этой записи, если пользователь возвращает ...
onUnload doesn ' t, похоже, работает, по крайней мере, когда я пытаюсь - плюс он не поймает закрытие браузера ... так что я был думая, что я могу запустить новое окно, когда окно документа закрыто (чтобы не раздражать - но чтобы сделать вызов журнала на сервер, а затем закрыть сам).
У кого-нибудь есть решение для этого? Я знаю, что все это «плохой» дизайн, но если у кого-то есть «правильный» способ справиться с этим сценарием, пожалуйста, скажите мне. (BTW- IE является requirement- это интранет на основе IE7 REQ.) 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 (/*@[email protected]*/false) {
document.onfocusin = onFocus;
document.onfocusout = onBlur;
} else {
window.onfocus = onFocus;
window.onblur = onBlur;
}
</script>
Вот неполный пример ДВУХ вещей, которые я пытаюсь сделать ... https://applynowdc1.chase.com/FlexAppWeb/renderApp.do?CELL = 6RQW & MSC = S02 & PROMO = DF01 & SPID = CSJN Эта страница запускает тип div, когда вы выходите за пределы страницы, и имеет функцию тайм-аута, поэтому она запускает счетчик ... Я ' ve попытался очистить код, чтобы подбирать мое решение - не повезло ... – jpmyob 2010-12-07 20:45:26
`window` не имеет события` focus` ... – jwueller 2010-12-07 20:46:01
Вы можете отредактировать свой оригинальный пост и добавить его туда. – jwueller 2010-12-07 20:46:23