Как ежедневно обновлять URL в определенное время, используя Javascript?

1

У меня есть URL-адрес, который вызывается cron-заданием, но я не заставляю его работать.

Я планирую сделать то же самое с помощью Javascript: как я могу перезагрузить страницу таким образом в определенный час дня (8:00 PM)?

  • 1
    Выполнить JavaScript из командной строки? Должны ли мы предполагать, что вы имеете в виду не Node, а обычный браузер? Что вы пытаетесь сделать именно?
  • 0
    У меня есть один URL, который я хочу обновить один раз в 8 вечера ....
Показать ещё 6 комментариев
Теги:
scheduled-tasks
job-scheduling

2 ответа

0

Я хотел перезагрузить контроллер с индексной страницы. Я напишу этот скрипт и разместил здесь URL-адрес - Hasif

Поскольку использование Javascript в вашей ситуации ограничено интерфейсом, пользователю нужно будет держать страницу открытой (индекс, как вы упомянули) все время. Это означает, что:

  • вызов URL будет выполнен только в том случае, если пользователь оставит браузер открытым (если эта задача действительно должна выполняться каждый день, вы не должны полагаться на клиентскую сторону, чтобы это произошло);
  • упомянутая вами cron-работа - лучшая альтернатива, но вы не можете заставить браузер пользователя открываться ежедневно в 8:00 вечера;
  • местное время пользователя не будет полезно для запуска этого события, если URL-адрес должен быть загружен для всех пользователей одновременно, поэтому активируйте его в определенное время в часовой пояс UTC (например).

Решение

  1. Создайте файл cookie, в котором хранятся дата и время, когда индексная страница была загружена пользователем и каждый раз, когда загружается страница, сравнивают ее с текущей датой и загружают URL только один раз (пример MDN). Возможно, вы захотите установить cookie в бэкэнд, но простой пример для его хранения и загрузки в JS:

var td =new Date(), date2store = '${td.getUTCFullYear()}-${td.getUTCMonth().toString().padStart(2,0)}-${td.getUTCDate().toString().padStart(2,0)} ${td.getUTCHours().toString().padStart(2,0)}:${td.getUTCMinutes().toString().padStart(2,0)}';
alert('Cookie to store: last_date=' + date2store + ' --> Is it after 8 PM UTC? ' + (new Date(date2store).getUTCHours() >= 19 ? 'YES!' : 'NO!' ));
  1. Если пользователь сохраняет браузер открытым до следующего дня, используйте простой скрипт, загруженный на страницу, чтобы проверить текущий часовой пояс и обновление UTC:

// place the code below in a setInterval(function() {...}, 1000*60*60);
// the if below should also the test the current cookie datetime as the first condition
// 0 index hour exists (therefore compare with 19 instead of 20)
if(new Date().getUTCHours() >= 19) {
  alert('Past 8 PM');
  // save the current date and time in the cookie HERE
  
  // reload the index page
  // window.location.reload(true); // true for not using cache
  // OR redirect to a new location
  // window.location.href = 'https://...';
} else alert('Not 8 PM yet');
-1

Следующий фрагмент кода JavaScript позволит вам обновить в данный момент:

function refreshAt(hours, minutes, seconds) {
var now = new Date();
var then = new Date();

if(now.getHours() > hours ||
   (now.getHours() == hours && now.getMinutes() > minutes) ||
    now.getHours() == hours && now.getMinutes() == minutes && now.getSeconds() >= seconds) {
    then.setDate(now.getDate() + 1);
}
then.setHours(hours);
then.setMinutes(minutes);
then.setSeconds(seconds);

var timeout = (then.getTime() - now.getTime());
setTimeout(function() { window.location.reload(true); }, timeout);
 }

Затем вы можете добавить тег скрипта, чтобы вызвать функцию refreshAt().

refreshAt(15,35,0); //Will refresh the page at 3:35pm
  • 0
    window.location.reload (истина); Как я могу дать свой URL здесь? Пожалуйста, помогите мне
  • 0
    Вы можете передать его как другой параметр в функции, только что имел параметр url refreshAt (часы, минуты, секунды, URL), ваш вопрос немного неясен
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню