@BakytShark

Как нажать на кнопку в точно указанное время?

Ребята, всем привет! В программировании не разбираюсь, но, собирая информацию по кусочкам, написал такой код, который автоматически заполняет и отправляет форму на сайте с интервалом в 1 секунду. Код выглядит так:

setInterval(() => {
const field1 = document.querySelector('[name="...."]');
const field2 = document.querySelector('[name="...."]');
const field3 = document.querySelector('[name="...."]');
const btn = document.querySelector("input.button.solid");

field1.value = "....";
field2.value = ".....";
field3.value = ".....";
btn.click();
}, 1000);

Вот, теперь стоит задача переделать этот код так, чтобы форма заполнялась и отправлялась только ОДИН раз в указанное время. При этом время отправки должно быть точным, вплоть до миллисекунд (время московское). Как можно реализовать такое? Вроде можно SetTimeout поставить. И еще, время московское и время серверное различаются? Дайте, пожалуйста, подсказку. Буду очень благодарен.
Всем спасибо за помощь в этом вопросе.
  • Вопрос задан
  • 143 просмотра
Решения вопроса 1
max_shane
@max_shane
Javascript / Node.js dev
Во-первых, точность вам никто не гарантирует.
Сами методы setTimeout и setInterval не означают, что "должен сработать ровно через столько-то времени".
Они означают "пусть сработает не раньше такого-то времени". А как сработает, зависит от множества факторов.

Чтобы реализовать вашу задачу усилиями только скрипта, можете за 1 минуту до нужного вам времени запустить скрипт, который попытается вызвать setInterval с таймаутом 86400000 мс ровно в тот момент когда
new Date().getHours() === yourHours && ... дальше тоже самое вместо hours повторить с минутами, секундами, миллисекундами.
Здесь yourHours - переменная в которой указываете в который час должно произойти событие. И с минутами, секундами аналогично.
И далее ваш setInterval будет вызывать коллбэк с периодичностью 24 часа - можете сами выбрать периодичность. Я для примера привел чтобы работало раз в сутки.
Ну или можете каждый день запускать скрипт заранее.
А вообще такое лучше делать на сервере с помощью cron.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы