在特定时间调用javascript函数

时间:2010-12-15 21:48:30

标签: javascript

例如我想在上午10点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 个答案:

答案 0 :(得分:86)

您需要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);

答案 1 :(得分:10)

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

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

答案 2 :(得分:0)

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