在一天中的特定时间调用 javascript 函数

IT技术 javascript
2021-01-10 18:47:35

例如,我想在上午 10.00.00.00 调用一个 js 函数,我该怎么办?

<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 开始它会打开谷歌,然后每 1 分钟后它会再做一次?那个代码有什么问题?

3个回答

您需要setTimeout来设置计时器和Date来计算计时器需要多长时间才能触发。

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 点开始有效还是在我打开页面时有效??
2021-03-14 18:47:35
设置超时(openAPage,millisTill10);// 这是好的 10.00 am 我的 funk 被调用了..但是在我写 setInterval(openAPage, 5*1000); 之后 不是在上午 10 点之后而不是在页面显示间隔开始工作之后..
2021-03-14 18:47:35
工作谢谢.. 还有一件事我想从上午 10 点开始每 5 分钟调用一次该函数怎么办?
2021-03-16 18:47:35
将其更改为 setTimeout(function{openAPage(), setInterval(openAPage, 5*1000)}, millisTill10)。然后初始计时器(在 10 点关闭)将执行对 openAPage 的初始调用并设置间隔。
2021-03-29 18:47:35
您可以使用setInterval. interval = setInterval(func, 5*60*1000);那么clearInterval(interval)当你不想继续时你可以。
2021-04-01 18:47:35

我在特定时间运行脚本的解决方案,顺便说一句,没有错误检查负超时。

//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);

假设代码位于一个将在 10:00 之前加载并且仍然会在 10:00 被查看的网页上,您可以使用setTimeout()来设置一个定时事件。该函数需要一些 JS 语句来执行,以及它应该执行之前的毫秒数。您可以使用内置的日期函数轻松找到第二部分。