Как я могу обновлять страницу каждые 5 минут, начиная с 8:01, а затем с 8:06 и так далее

<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>

Это мой демонстрационный код. Я обновляю страницу каждые 5 минут, когда кто-то нажимает на ссылку, а заголовок вкладки отсчитывает 5 пятерок. Однако я не могу понять, как я могу запустить обновление в 8:01, а затем снова в 8:06, а затем снова в 8:11, и просто продолжать и не зависит от того, когда кто-то нажимает на него.

Любая помощь?

Какая ссылка? Эта страница выглядит так, как будто она начинает цикл обновления, как только она загружается. И ваше описание звучит так, будто оно успешно обновляется с 5-минутными интервалами. Я не вижу здесь ничего, связанного с какими-либо событиями "щелчки". Мне непонятно, в чем проблема.

David 20.06.2018 17:11

Код работает, но вы хотите, чтобы он запускался только в 8:01? Объясните, пожалуйста, вариант использования. Что должно произойти, если, скажем, кто-то откроет страницу в 8:00 или 8:02?

Greg 20.06.2018 17:15

@David Под кликом я имел в виду, когда кто-то нажимает на ссылку, чтобы перейти на эту страницу. Проблема в том, что я хочу обновить страницу в 8:01, а затем в 8:06. Я хочу, чтобы страница действительно обновлялась по мировому времени каждые 5 минут, а не через 5 минут после того, как кто-то щелкнул по ней. Надеюсь, это объясняет.

Mew 20.06.2018 17:27

@Greg Да, когда кто-то нажимает на него в 8:02, он обновляется в 8:07. Я хочу, чтобы страница обновлялась в 8:06 независимо от того, когда кто-то нажимает на нее. Последнее обновление должно быть в 8:01.

Mew 20.06.2018 17:29
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
4
123
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

использовать установленный интервал.

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

setinterval в мс (5 мин = 300 к мс)

Как бы это началось в 8:01?

Mew 20.06.2018 17:12

Новая страница (после обновления) не знает о состоянии предыдущей страницы. Итак, вам нужен способ передать это состояние вперед через параметр запроса или что-то в этом роде.

Мой подход заключался бы в том, чтобы просто перезагрузить страницу, когда они щелкнули по ссылке, и настроить новую страницу на обновление через 5 минут (сохраняя тот же URL-адрес, поэтому мы загружаем страницу с кодом обновления).

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>

пример, похоже, не работает из-за навигации. но теоретически это должно работать

Для запуска в указанное время используйте следующую функцию "ожидания"

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
    }
}
Ответ принят как подходящий

Для достижения ожидаемого результата используйте SetInterval

  1. SetInterval для каждой минуты (1000 * 60)
  2. GetTime в часах и минутах отдельно
  3. Начать после 8:00 или в любое время после 8:00
  4. Проверяйте каждые 5 минут, чтобы обновляться
  5. обновить окно

    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)

пример кода - https://codepen.io/nagasai/pen/MXVWxb?editors=1010

удалил свой ответ, потому что это лучший ответ.

digital-pollution 20.06.2018 17:37

измените условие if на if (currTimeHr> = 7 && currTimeMin> = 59)

Naga Sai A 21.06.2018 21:10

может быть, если выполняется условие и перенаправление и загрузка страницы .. все вместе происходит за 30 секунд

Naga Sai A 21.06.2018 21:10

любое изменение времени обновления ??

Naga Sai A 22.06.2018 17:01

Я попытался добавить следующее, но он все еще не обновляется. var currTimeSec = новая дата (). getSeconds (); если (currTimeHr> = 8 && currTimeMin> = 0 && currTimeSec == 30) if (currTimeMin% 5 === 0) {window.location.reload (true); }}}, 1000 * 60)

Mew 22.06.2018 21:47

вместо того, чтобы запускать каждую минуту, сделайте setInterval запускаться каждую секунду, то есть 1000 вместо 1000 * 60, чтобы он был точным и начинался с 8 точно

Naga Sai A 22.06.2018 21:49

Я совершенно забыл об интервале. Теперь он работает отлично! Большое спасибо!

Mew 22.06.2018 21:57

@Harshal Рад, что это сработало для вас :) .. пожалуйста, отметьте мой пост как ответ, если он сработал для вас

Naga Sai A 22.06.2018 22:00

Другие вопросы по теме