Javascript 当浏览器处于非活动状态时,jQuery和setTimeout停止工作
我有一些jQuery代码,每6秒执行一次 使用Mozilla Firefox 51.0.1,它可以正常工作。使用InternetExplorer11,它似乎工作得很好,但当我离开计算机,做一些其他事情,然后回来时,InternetExplorer11可能已经停止运行脚本。例如,几个小时后。换句话说,它将不再每6秒执行一次。没有可用的错误消息 我怎样才能解决这个问题Javascript 当浏览器处于非活动状态时,jQuery和setTimeout停止工作,javascript,jquery,internet-explorer,firefox,Javascript,Jquery,Internet Explorer,Firefox,我有一些jQuery代码,每6秒执行一次 使用Mozilla Firefox 51.0.1,它可以正常工作。使用InternetExplorer11,它似乎工作得很好,但当我离开计算机,做一些其他事情,然后回来时,InternetExplorer11可能已经停止运行脚本。例如,几个小时后。换句话说,它将不再每6秒执行一次。没有可用的错误消息 我怎样才能解决这个问题 <script src="/jquery-3.0.0.min.js"></script> <scri
<script src="/jquery-3.0.0.min.js"></script>
<script type="text/javascript">
<!--
$(document).ready(function(){
valvonta = function() {
var kaavio = 106; // 38;
var a = performance.now();
jQuery.post("hae_tilanteet.php", {
kaavio: kaavio
}).done(function(data) {
var b = performance.now();
$('#valvonta').html(data);
var c = performance.now();
// alert('search ' + (((b - a)/1000)%60) + ' s and update ' + (((c - b)/1000)%60) + ' s');
setTimeout(valvonta, 6000);
});
};
setTimeout(valvonta, 6000);
});
//-->
</script>
多亏了@GOTO0,我修改了我原来的代码。现在,在我看来,下面的代码将解决我的问题
$(document).ready(function(){
var vasen = 0;
setInterval(function() {
vasen++;
$('#valvonta').stop(true,true).css("left", vasen);
var kaavio = 106; // 38;
var a = performance.now();
jQuery.post("hae_tilanteet.php", {
kaavio: kaavio
}).done(function(data) {
var b = performance.now();
$('#valvonta').html(data);
var c = performance.now();
// alert('search ' + (((b - a)/1000)%60) + ' s and update ' + (((c - b)/1000)%60) + ' s');
});
}, 6000);
});
在
done
之后尝试添加fail
函数,以防万一(但我猜控制台中会出现错误)。无论调用成功与否,总是可以执行代码。@nonzaprej谢谢。您认为这可能与jQuery的缓存有关吗?为什么不使用setInterval()
?我不知道。编辑:不,文档中说:使用POST获取的页面从不缓存,因此jQuery.ajaxSetup()中的缓存和ifModified选项对这些请求没有影响。
@Erdogan Oksuz我也正要问他,但是我看到他在方法的末尾使用了setTimeout,所以我认为应该可以。@ErdoganOksuz使用setTimeout,我只是想在再次执行函数之前确保上一次函数调用已经结束。