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

新手上路,请多包涵

例如我想在上午 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 分钟后它会再次打开?该代码有什么问题?

原文由 ramazan murat 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 250
2 个回答

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

原文由 Chris Morgan 发布,翻译遵循 CC BY-SA 2.5 许可协议

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

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

原文由 Harijs Krūtainis 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题