当有人离开页面但没有查看时,有没有办法暂停长轮询脚本?因此,如果我打开应用程序的多个选项卡或窗口,只有我正在查看的那个会运行活动长轮询脚本吗?
答案 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?
答案 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秒),我们就会停止执行我们的轮询脚本。
希望这有帮助