屏幕上的jquery运行屏幕外暂停

时间:2011-05-02 15:58:39

标签: javascript jquery long-integer polling

当有人离开页面但没有查看时,有没有办法暂停长轮询脚本?因此,如果我打开应用程序的多个选项卡或窗口,只有我正在查看的那个会运行活动长轮询脚本吗?

3 个答案:

答案 0 :(得分:1)

实际上没有有效的方法可以在javascript中暂停脚本。但是,我建议一个:

function pausecomp(millis){

    var date = new Date();
    var curDate = null;

    do{ 
        curDate = new Date();
    }while(curDate-date < millis);
} 

因此,这将暂停整个脚本数毫秒。然而,这不是一个好习惯。

Javascript允许设置延迟后发生的事件:

setTimeout("alert('hello')",1250);

因此,当达到这行代码时,setTimeout方法在传递1250毫秒时调用警报。

我希望这些信息可以帮助你;)


要检测鼠标离开窗口的时间,我已为您设置了一个jsfiddle:http://jsfiddle.net/xPAwu/1/

除了在stackoverflow上实际上有一些问题:How can I detect when the mouse leaves the window?

Javascript event when mouse leaves browser window

答案 1 :(得分:0)

这里的困难在于知道用户实际是否空闲。我过去使用过这个idleTimer插件,看起来效果很好。作者使用事件组合(mousemove按键等)来确定用户是否处于活动状态。

答案 2 :(得分:0)

您可以看到该页面空闲的时间:

<script>
   $(document).ready(function(){
      var lastEventTime = null;
      //Detect a user interaction
      $(document).bind("mousemove keyup mousewheel", function(event){
         lastEventTime = new Date(); //Store last event time
      });
      setInterval(function(){
         var currentTime = new Date();
         var idleSeconds = (currentTime.getTime() - lastEventTime.getTime())/1000;
         if( idleSeconds > 60) return; //If more than 60 seconds idle, stop polling
         pollingScript(); //Here goes your script
      }, 1000);
   });
</script>

我们正在做的是在用户交互时移动(移动鼠标或按键)。如果它没有发生很长时间(在本例中为60秒),我们就会停止执行我们的轮询脚本。

希望这有帮助