我尝试使用settimeout刷新页面时无法正常运行

时间:2018-10-24 22:33:23

标签: javascript refresh settimeout userscripts tampermonkey

此代码的目的是在1秒或5秒的等待时间后刷新页面,具体取决于随机变量。但是,下面的代码可以使它要么在每隔1秒的等待时间后刷新一次,要么在每隔5秒的等待时间后刷新一次。

如何使刷新等待时间为每次刷新1秒或5秒?

public <T> T rndInx(T[] array) {
    int index = (int)(Math.random() * array.length);
    return array[];
}

1 个答案:

答案 0 :(得分:1)

问题是,当您将iframe指向当前文档时,包含iframe的文档仅被加载一次(这就是为什么您看到相同的间隔被使用的原因以及以上),并且当iframe在其内部加载相同文件时,其为interval生成的值与控制iframe的加载不同。

我认为您应该对setTimeout中的当前文件进行AJAX请求。这样,您只需再次执行AJAX调用即可处理服务器错误。这样会更简单。否iframe

(function ($) {
 'use strict';

 // Store possible delay values in an array
 var possibleDelays = [1000, 5000];
      
 function reload() {
   $.ajax(location.href)
    .done(function () {
       $("h1").text(new Date().toLocaleTimeString());
       // Success! Do it again!
       setTimeout(reload, possibleDelays[Math.round(Math.random())]);
    }).fail(reload); // When there's an error, try again
  }

  // Initiate the process with an interval that is generated right here.
  setTimeout(reload, possibleDelays[Math.round(Math.random())]);
})(jQuery);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<h1></h1>