有没有一种方法可以在某人离开页面但不查看它时暂停长轮询脚本?因此,如果我打开了应用程序的多个标签或窗口,只有我正在积极查看的标签页才会运行活动的长轮询脚本?
有没有一种方法可以在某人离开页面但不查看它时暂停长轮询脚本?因此,如果我打开了应用程序的多个标签或窗口,只有我正在积极查看的标签页才会运行活动的长轮询脚本?
实际上,在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毫秒后调用alert。
希望这些信息能对你有所帮助;)
您可以查看页面空闲的时间:
<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>
这里的难点在于如何判断用户是否真正处于空闲状态。我过去使用过idleTimer插件,效果似乎还不错。作者使用了一系列事件(mousemove、keypress等)来判断用户是否活跃。