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

时间:2013-02-22 19:54:38

标签: javascript

我有一个每分钟运行一次的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);

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

我可以通过创建另一个每小时触发一次的间隔函数并检查是否应该重新加载来实现。但由于我已经拥有每分钟运行的上述功能,我可以从那里开始吗?

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

3 个答案:

答案 0 :(得分:7)

我会存储上次刷新的日期,计算差异,并且不到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);

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

答案 1 :(得分:1)

没有进入更复杂的解决方案以更好的方式完成此操作,您可以使用getDay()并将其保存在cookie中,以便您可以检查上次调用此方法是否在同一天,这种方式只有在你上午9点和不同的一天之后的一天。

答案 2 :(得分:-2)

它在C#中。算法将是:

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