我有一个页面应该每小时完全重新加载(所以在上午8:00,上午9:00等等)。该页面显示在设备上,无需用户交互即可随时打开。例如,它可以在上午8:45开启,但第一次重新加载必须在上午9:00。这意味着具有3.600.000毫秒的简单setTimeout不是正确的选择。 我的实际代码是:
complete: function() {
setTimeout(location.reload(),3600000 - ((new Date) % 3600000));
}
这是获得结果的最佳方式吗?这一天的所有时间都是安全的吗?我还在学习javascript中的日期,所以感谢您的帮助!
答案 0 :(得分:3)
在这行代码中
setTimeout(location.reload(),3600000 - ((new Date) % 3600000));
在location.reload()
之前遇到一个问题setTimeout
,所以您的代码等效于下一个:
var func = location.reload(),
delay = 3600000 - ((new Date) % 3600000);
setTimeout(func, delay);
您需要传递对
等功能的引用setTimeout(location.reload.bind(location),3600000 - ((new Date) % 3600000));
OR
setTimeout(function(){location.reload();},3600000 - ((new Date) % 3600000));
答案 1 :(得分:0)
如果您可以使页面首次从服务器重新加载,则服务器可以结束重新加载值,该值是从小时开始的毫秒数,然后在重置计时器时重新加载整整一小时。 / p>
如果页面没有从服务器重新加载,这将无法工作,例如,如果笔记本电脑被唤醒并且页面未以某种方式重新加载。 (我不知道在这种情况下浏览器会做什么......)