Mew
Mew

Reputation: 13

How can I refresh a page every 5 minutes starting at 8:01 a.m. and then 8:06 a.m. and so on.

<html>
<head>Harshal</head>

<script>

var limit="5:0"
var doctitle = document.title
var parselimit=limit.split(":")
parselimit=parselimit[0]*60+parselimit[1]*1

function beginrefresh(){
  if (parselimit==1)
    window.location.reload()
  else{
    parselimit-=1
    curmin=Math.floor(parselimit/60)
    cursec=parselimit%60
  if (curmin!=0)
    curtime=curmin+" minutes and "+cursec+" seconds left until page refresh!"
  else
    curtime=cursec+" seconds left until page refresh!"
    document.title = doctitle + ' (' + curtime +')'
    setTimeout("beginrefresh()",1000)
  }
}

if (window.addEventListener)
  window.addEventListener("load", beginrefresh, false)
else if (window.attachEvent)
  window.attachEvent("load", beginrefresh)

</script>
</html>

This is my demo code. I'm refreshing the page every 5 minutes when someone clicks on the link and the tab title counts down the 5 fives. However, I cannot figure out how I can start the refresh at 8:01 a.m and then again at 8:06 am and then again at 8:11 a.m. and just keeps going and doesn't depend on when someone clicks on it.

Any help?

Upvotes: 1

Views: 1916

Answers (4)

Naga Sai A
Naga Sai A

Reputation: 10975

To achieve expected result, use SetInterval

  1. SetInterval for every minute (1000*60)
  2. GetTime in Hours and Minutes separately
  3. Start after 8am or anytime after 8am
  4. Check every 5 mins to refresh
  5. refresh window

    setInterval(function(){
      var currTimeHr = new Date().getHours();
      var currTimeMin = new Date().getMinutes();
      if(currTimeHr >= 8){  //start at 8 or at any point after 8am
        if(currTimeMin%5 === 0){  // check every 5 mins
          window.location.reload(true); //refresh page
        }
      }
    }, 1000*60)

code sample - https://codepen.io/nagasai/pen/MXVWxb?editors=1010

Upvotes: 1

Alex S.
Alex S.

Reputation: 632

To start at specified time use the following "wait" function

var startHour = 8;
var startMinute = 5;

function wait() {
    var startTime = currentTime = new Date();
    startTime.setHours(startHour);
    startTime.setMinutes(startMinute);

    if (startTime < currentTime) {
        setTimeout(wait, 1000);
    } else {
        // run refresh function here
    }
}

Upvotes: 0

dgeare
dgeare

Reputation: 2658

The new page (after refresh) has no awareness of the previous page's state. So you need a way to pass that state forward, through a query parameter or something.

My approach would be to just reload the page when they clicked the link, and have the new page set itself to refresh after 5 minutes (keeping the same url so we're loading the page with the refresh code).

if(window.location.search.includes('refresh')){
  setTimeout(function(){//we're in "refresh mode" so just wait 5 minutes and do it again
    location.href = location.href;
  }, 1000 * 60 * 5);
}
<a href="?refresh">refresh every five minutes</a>

the example doesn't seem to work because the navigation. but it should work in theory

Upvotes: 0

Narcil
Narcil

Reputation: 355

use set interval.

setInterval(function() {
    window.location.reload();
}, 300000); 

setinterval is in ms (5mins = 300k ms)

Upvotes: 0

Related Questions