如何在特定时间重新加载页面,并且每天只加载一次

How to reload a page at certain hour and only once a day

本文关键字:加载 每天 一次 新加载 定时间      更新时间:2023-09-26

我有一个每一分钟运行一次的javascript函数。

setInterval(function(){
  //first, check time, if it is 9 AM, reload the page
   var now = new Date();
   if (now.getHours() == 9 {
      window.refresh();
   }
  //do other stuff
},60000);

现在的问题是,我希望重新加载每天只发生一次。由于该函数每分钟运行一次,所以下次它启动时,如果在上午9点到10点之间,它将再次重新加载页面。如何使重新加载只发生一次?

我可能可以通过创建另一个间隔函数来做到这一点,该函数每小时启动一次,并检查是否应该重新加载。但既然我已经有了上面每分钟运行一次的函数,我可以从那里开始吗?

如果我最终创建了另一个每小时检查一次的函数。如果这两个功能同时启动,会发生什么?

我会存储上次刷新的日期,计算差异,如果不到6小时(为了安全起见),就不需要刷新了。

var lastRefresh = new Date(); // If the user just loaded the page you don't want to refresh either
setInterval(function(){
  //first, check time, if it is 9 AM, reload the page
   var now = new Date();
   if (now.getHours() == 9 && new Date() - lastRefresh > 1000 * 60 * 60 * 6) { // If it is between 9 and ten AND the last refresh was longer ago than 6 hours refresh the page.
      location.reload();
   }
  //do other stuff
},60000);

我希望这就是你的意思。请注意,这是未经测试的。

不需要更复杂的解决方案来以更好的方式完成这项工作,您可以使用getDay()并将其保存在cookie中,这样您就可以检查上一次调用此方法是否是在同一天,这样只需要在上午9点之后的第二天,就可以在另一天了。

它在C#中。算法为:

  1. 在C#中创建一个计时器,它在第N小时运行(例如上午10:00、下午14:00等)
  2. 您检查时间是否为X小时(在本例中为上午9:00)
  3. 如果是,则刷新页面