Я из Германии, извините за мой английский.
Я ищу простой код HTML или Javascript для переключения на другой URL-адрес в определенное время.
Я запускаю целевую страницу, предложение которой закрывается, например, 16 апреля в десять часов. Мне нужен небольшой скрипт или код, который направляет на другой URL-адрес, когда öfter будет закрыт.
Я благодарен за любую помощь.
С наилучшими пожеланиями Марко
вы действительно хотите вызывать функцию 86400 раз в день?
Вам нужна одна или обе из двух разных вещей: 1) пользователь прибывает на целевой странице после крайнего срока. 2) пользователь в данный момент просматривает страницу, и срок истек. №1 лучше всего обрабатывать на бэкэнде, №2 будет обрабатываться javascript внутри страницы. Вы ищете решение для №1, №2 или обоих?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вот ваш сценарий, основанный на указанном вами времени. По истечении указанного времени ссылка будет изменена автоматически.
"https://jsfiddle.net/rounak1/2pxLu5df/2/"
Если у вас есть рабочий пример, чтобы продемонстрировать, что у вас должен быть настоящий ссылка на сайт, не заставляйте нас копировать и вставлять. У вас также должен быть соответствующий код в вашем ответе, желательно как фрагмент стека. Ответы, содержащие только ссылки, со временем ухудшаются. Ответ также должен включать объяснение кода и того, как он решает проблему.
вот код
let d1 = new Date()
var d2 = new Date('2021-04-16 22:00:00.00');
if (d1 > d2) {
window.location = 'https://www.google.com/'
}
Я считаю, что с этой проблемой лучше справляется ваш бэкэнд, который может перенаправить пользователя на другую страницу до ее загрузки, поскольку, если вы сделаете это в javascript, страница должна будет загрузиться первой.
Однако, поскольку вы хотите, чтобы это было реализовано в Javascript, вы можете сделать что-то вроде ниже:
var time = moment("16/04/2021 10:00", "DD/MM/YYYY HH:mm");
var now = new Date();
if (time > now) {
window.location.replace("replace with your url"); // Without allowing the user to hit the back button
}
В приведенном выше примере time сохраняет дату и время, когда предложение заканчивается, в формате, заключенном в виде строки (читайте об этом здесь: https://momentjs.com/docs/#/parsing/string-format/). Это сравнивается со временем now для реализации перенаправления.
Подробнее о редиректе здесь: https://www.w3schools.com/howto/howto_js_redirect_webpage.asp
Вышеупомянутое требует использования библиотеки moment.js, которую вы можете найти здесь: https://momentjs.com/
Если у человека загружена целевая страница и он ее просматривает, и вы хотите отправить его по другому URL-адресу, когда предложение закрывается, вы можете рассчитать, сколько времени до этого произойдет, когда он перейдет на целевую страницу, а затем отправить его на новый URL, когда наступит это время.
setTimeout будет запускать функцию после истечения таймера, и эта функция может изменить window.location, отправив их на новый URL.
Когда целевая страница грузы получает текущее время и время истечения срока действия предложения:
let now = new Date();
let expires = new Date('2021-04-16 22:00:00');
Вычитание дает вам количество миллисекунд до истечения времени истечения, что удобно, потому что это то, что функция setTimeout хочет для своего параметра «задержки».
Подробно это могло бы выглядеть так:
const now = new Date();
const expires = new Date('2021-04-16 22:00:00');
const delay = expires - now;
window.setTimeout(function() {
window.location = 'https://example.com/';
}, delay);<div>
<p>This is the landing page</p>
</div>Этот цикл не ожидает истечения времени, о чем DCR предупреждает в комментарии; он просто устанавливает таймер, о котором потом заботится браузер.
Вся математика может быть свернута без использования переменных, поэтому она становится window.setTimeout(function() {...etc...}, new Date('2021-04-16 22:00:00') - new Date());
settimeout для запуска каждую секунду, которая проверяет время и меняет location.href, когда таймер заканчивается - остерегайтесь различий в часовых поясах, он работает на клиенте - используйте время utc