Вызовите функцию JavaScript в определенное время суток. - PullRequest
44 голосов
/ 16 декабря 2010

например, я хочу вызвать функцию js в 10.00.00.00 утра. как я могу это сделать?

<script type="text/javascript">

var now = new Date();

var millisTill10 = new Date(now.getFullYear(), now.getMonth(), now.getDate(), 0, 30, 0, 0) - now;

setTimeout(function{openAPage(), setInterval(openAPage, 60*1000)}, millisTill10)

function openAPage() {

var startTime = new Date().getTime();
var myWin = window.open("http://google.com","_blank")
var endTime = new Date().getTime();
var timeTaken = endTime-startTime;


document.write("<br>button pressed@</br>")
document.write(new Date(startTime));
document.write("<br>page loaded@</br>")
document.write(new Date(endTime));
document.write("<br>time taken</br>")
document.write(timeTaken);

myWin.close()

}

</script>

Я ожидаю от этого кода в 00.30, он откроет Google, а затем каждые 1 минуту он будет делать это снова? что не так с этим кодом?

Ответы [ 3 ]

87 голосов
/ 16 декабря 2010

Вам потребуется setTimeout , чтобы установить таймер, и Дата , чтобы рассчитать, сколько времени нужно таймеру, чтобы сработать.

var now = new Date();
var millisTill10 = new Date(now.getFullYear(), now.getMonth(), now.getDate(), 10, 0, 0, 0) - now;
if (millisTill10 < 0) {
     millisTill10 += 86400000; // it's after 10am, try 10am tomorrow.
}
setTimeout(function(){alert("It's 10am!")}, millisTill10);
10 голосов
/ 21 января 2015

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

//year, month 0-11, date, hour, min (can add ,sec,msec)
var eta_ms = new Date(2015, 0, 21, 17, 0).getTime() - Date.now();
var timeout = setTimeout(function(){}, eta_ms);
0 голосов
/ 16 декабря 2010

Предполагая, что код находится на веб-странице, которая будет загружена до 10:00 и будет по-прежнему просматриваться в 10:00, вы можете использовать setTimeout() для настройки события по времени.функция требует выполнения некоторого оператора JS и количества миллисекунд до ее выполнения.Вы можете найти эту вторую часть довольно легко с помощью встроенных функций даты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...