2016-06-30 2 views
0

Мне нужно перезагружать содержимое страницы каждые 30 минут (в час и 30 минут по часам). Я думаю, что JavaScript для этого, и я пробовал код ниже, но он переходит в бесконечный цикл. Я не уверен, как изменить его, чтобы избежать цикла.Обновить страницу каждый час на: 00 минут и: 30 минут

meta теги не помогут, так как они не могут быть выполнены в течение определенной минуты.

function refreshContent() { 
    var tDate = new Date(); 
    thisHour = tDate.getHours(); 
    thisMinute = tDate.getMinutes(); 
    thisSecond = tDate.getSeconds(); 
    setTimeout("refreshContent()",60000); // in milliseconds = 1 minute 

    if (thisMinute == 0 || thisMinute == 30) { 
     location.reload(); 
    } 

} 
refreshContent(); 

ответ

3

Вам нужно будет установить только один таймер и рассчитать, когда будет в следующий раз обновляться. Таким образом, вы можете предотвратить повторную перезагрузку страницы, когда страница загружается точно в: 00 или: 30.

var minute = new Date().getMinutes(), 
    nextRefresh = (30 - (minute % 30)) * 60 * 1000; 

setTimeout(function() { location.reload(); }, nextRefresh); 

30 - (minute % 30) вычисляет, сколько минут до следующего получаса и * 60 * 1000 конвертирует, что в миллисекундах. После запуска перезагрузки таймер устанавливается на 30 минут.

+0

Намного проще! Мы можем завершить обновление каждые 15 минут (00, 15, 30, 45), чтобы сделать это следующим: nextRefresh = (15 - (минута% 15)) * 60 * 1000; '? – Pat

+1

Да, это так. – JJJ

+0

Спасибо за помощь – Pat

-2

Вы сразу же вызова функции refreshContent при настройке setTimeout. Попробуйте setTimeout(refreshContent, 60000);

Смежные вопросы