每隔一分钟刷新HTML页面

时间:2018-08-26 15:43:10

标签: javascript html html5

我有一些代码,每次有新的分钟(即,秒== 0时)都会刷新我的HTML页面。

<head>
<script>
    function reload(){
        location.reload();
    }
    function refresh(){
        var d = new Date();
        var s = d.getSeconds();
        if (s == 0) {setTimeout(reload(), 1000)};
    }
 </script> </head>
 <body onload="refresh(), setInterval('refresh()',1000)">

但是,当它刷新时,它会在秒== 0的时间内刷新无数次。为了防止这种情况发生,我尝试实现“ setTimeout”-因此它仅刷新一次。但是,这不起作用,并且在s == 0时它仍然刷新了无数次。是否有人还有其他想法可以防止这种情况发生?有任何问题,只问。谢谢

3 个答案:

答案 0 :(得分:1)

对于JavaScript,您可以将其简化为:

setTimeout(() => {
  window.location.reload(1);
}, 60 * 1000);

但是,一个不使用JS的非常简单的解决方案是

<meta http-equiv="refresh" content="60; URL=https://example.com/">

答案 1 :(得分:1)

通常,refreshin不是处理问题的好方法。您是否考虑过使用异步调用并使用JavaScript刷新DOM而不是重新加载整个页面?

但是,如果您想走这条路线,我会以当前的开始时间为基准,然后从这里检查是否已经过了1秒。

const t0 = performance.now();
function refresh(){
    if ((performance.now() - t0) >= 1000) {
        location.reload();
    }
}

但是您需要调用refresh直到发生这种情况。

至于“不理解”评论,我清理了一小撮东西,并在此处添加一些解释:

第一行在所有函数之外,因此它设置了“全局”变量,因为它永远不会改变,因此我使用了余弦(而不是变量)来提高速度和可读性。它以秒为单位设置当前时间t0

const t0 = performance.now();

在您的函数中,我使用相同的命令再次获取ms,并从中减去以前保存的ms。如果新数字比原始数字大1000倍,则表示已经过去了一秒钟,它可以重新加载。

if ((performance.now() - t0) >= 1000) {...

答案 2 :(得分:1)

如果我理解正确,则您不想在加载1分钟后刷新,而是在秒= 0时刷新。

您不必经常通过间隔调用刷新功能。

我们目前排名第二。因此,如果我们从分钟中减去,我们可以找到剩余的秒到新的分钟。

60 - d.getSeconds();

然后转换为毫秒,设置超时时间,页面将在新的一分钟被完全刷新。

setTimeout(function() { location.reload() }, 1000 * (60 - d.getSeconds()));

如果如此重要,您可以考虑使用d.getMilliseconds()

加/减毫秒