Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当浏览器处于非活动状态时,jQuery和setTimeout停止工作_Javascript_Jquery_Internet Explorer_Firefox - Fatal编程技术网

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

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

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

使用Mozilla Firefox 51.0.1,它可以正常工作。使用InternetExplorer11,它似乎工作得很好,但当我离开计算机,做一些其他事情,然后回来时,InternetExplorer11可能已经停止运行脚本。例如,几个小时后。换句话说,它将不再每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>

多亏了@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,我只是想在再次执行函数之前确保上一次函数调用已经结束。