Как знать, читается ли страница в настоящее время пользователем с JavaScript?

Класс DeleteArguments имеет метод getDeleteProjectContents, который даст вам это значение.

Получите DeleteArguments, используя вызов getArguments() для класса DeleteParticipant, который расширяет ваш участник удаления.

9
задан rene 1 June 2016 в 03:40
поделиться

6 ответов

Ваше лучшее решение было бы чем-то вроде этого:

 var inactiveTimer;
 var active = true;
 function setTimer(){
  inactiveTimer = setTimeOut("stopAjaxUpdateFunction()", 120000); //120 seconds
 }
 setTimer();
 document.onmouseover = function() { clearTimeout ( inactiveTimer ); 
                                     setTimer(); 
                                     resumeAjaxUpdate();
  }; //clear the timer and reset it.
 function stopAjaxUpdateFunction(){
  //Turn off AJAX update
  active = false;   
 }
 function resumeAjaxUpdate(){
  if(active == false){
   //Turn on AJAX update
   active = true;
  }else{
   //do nothing since we are still active and the AJAX update is still on.
  }    
 }

stopAjaxUpdateFunction должен остановить прогресс обновления Ajax.

4
ответ дан 3 November 2019 в 00:05
поделиться

Я посмотрел на ту проблему прежде для исследовательского проекта. В то время (2-3 года назад) я не нашел способ получить информацию от браузера о том, минимизированы ли Вы :(

2
ответ дан 3 November 2019 в 00:05
поделиться

Как насчет того, чтобы установить "тайм-аут неактивности", который сбрасывается каждый раз, событие от нажатия мыши или событие клавиатуры получены в DOM? Я полагаю, что это - то, как большинство программ IM решает, что Вы отсутствуете (хотя они делают это путем сцепления входных сигналов на уровне в масштабе всей системы),

3
ответ дан 3 November 2019 в 00:05
поделиться

Сначала проверьте, когда окно потеряет и получит фокус.

window.onblur = function () { /* stop */ };
window.onfocus =  function () { /* start */ };

Кроме того, по различным причинам пользователь может прекратить читать страницу, не заставляя это потерять фокус (например, он встает и убегает от компьютера). В этом случае необходимо принять после периода неактивности (никакие события от нажатия мыши или события клавиатуры), что внимание пользователей оставило страницу. Код, чтобы сделать, который описан в другом ответе.

2
ответ дан 3 November 2019 в 00:05
поделиться

Можно прислушаться к mousemove и событиям нажатия клавиши. Если один из тех был уволен в прошлое X секунд, то продолжает Ваше обновление. Иначе не обновлять.

Это не прекрасно, но я думаю, что лучше, чтобы можно было сделать с чистым JS.

Если Вы хотите рисковать в мир Flash, Silverlight или Java, Вы можете получать больше информации от браузера.

0
ответ дан 3 November 2019 в 00:05
поделиться

Я знаю, что вы уже приняли ответ, но лично я бы использовал комбинацию нескольких ответов, упомянутых здесь по разным причинам, в том числе:

  • Использование событий мыши только отталкивает опытных пользователей при просмотре с клавиатуры.
  • Использование событий размытия / фокуса не позволяет пользователям, которые идут заварить чай; -)

Я, скорее всего, использовал бы что-то вроде следующего в качестве руководства:

var idleTimer, userIsIdle, pollingTimer;
document.onkeydown = document.onmousemove = resetTimer;

window.onload = function () {
    pollingTimer = window.setTimeout(runPollingFunction, 30000);
    resetTimer();

    /* IE's onblur/onfocus is buggy */ 
    if (window.navigator.appName == "Microsoft Internet Explorer")
        document.onfocusin  = resetTimer,
        document.onfocusout = setIdle;
    else
        window.onfocus = resetTimer,
        window.onblur = setIdle;
}
function resetTimer() {
    if (userIsIdle)
        setBack();

    window.clearTimeout(idleTimer);
    idleTimer = window.setTimeout(setIdle, 120000); // 2 minutes of no activity    
}
function setIdle() {
    userIsIdle = true;
    window.clearTimeout(pollingTimer); // Clear the timer that initiates polling
    window.clearTimeout(setIdle);
}
function setBack() {
    userIsIdle = false;
    runPollingFunction(); // call the polling function to instantly update page
    pollingTimer = window.setTimeout(runPollingFunction, 300000);
}
1
ответ дан 3 November 2019 в 00:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: