使用setTimout更改刷新计时器取决于用户焦点的问题
||
我一直使用ajax调用每5秒刷新一次我的Web应用程序的某些元素。我没有问题使用setInterval(refreshElements,5000)来实现这一目标。
现在,我想考虑用户是否实际在页面上。我设法使用\'focus \'和\'blur \'事件来检测到这一点。但是,以下代码确实可以正常工作。我希望如果用户在页面上每5秒调用一次refreshElements(),但是如果用户不在页面上,则每15秒调用一次。
现在发生的是,除非我正在查看页面,否则计时器似乎会冻结。我已经使用Firebug验证了此行为。我每5秒看到一次GET调用,但是一旦我切换到另一个标签,就不会再调用GET,直到我切换回原始标签为止。有任何想法吗?
这是代码:
$(document).ready(function(){
var refreshinterval = 5000;
var timer;
$(window).bind(\"blur\", function() {
refreshinterval = 15000;
});
$(window).bind(\"focus\", function() {
refreshinterval = 5000;
});
function refreshElements(){
clearTimeout(timer);
$.ajax({
type: \"GET\",
dataType: \'json\',
url: \"refresh_url\",
cache: false,
success: function(data){
// fill the desired page elements
}
});
timer = setTimeout(refreshElements, refreshinterval);
}
refreshElements();
});
没有找到相关结果
已邀请:
1 个回复
献导外拘