浏览器处于非活动状态时,jQuery和setTimeout停止工作

时间:2017-05-04 07:18:18

标签: javascript jquery internet-explorer firefox

我有一些jQuery代码,每6秒执行一次。

使用Mozilla Firefox 51.0.1,它可以正常工作。使用Internet Explorer 11似乎工作正常,但是当我离开计算机,执行其他操作并返回时,Internet Explorer 11可能已停止运行该脚本。例如,几个小时后。换句话说,它将不再每6秒执行一次。没有可用的错误消息。

我怎么能解决这个问题?

<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>

1 个答案:

答案 0 :(得分:1)

感谢@ 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);
});