如果我从触发器启动setTimeout函数,该函数会在重新加载页面时停止吗?
我在页面的onload事件上启动了setTimeout函数“periodic_update()”。
这是否会创建periodic_update()函数进程的多个实例?
<body onload="init_page_onload()">
function init_page_onload() {
periodic_update();
}
function periodic_update() {
foo()
setTimeout("periodic_update()", PERIODIC_UPDATE_REPEAT_PERIOD_MS )
}
答案 0 :(得分:4)
当重新加载页面时,“先前”计时器将被丢弃,并且将启动一个新计时器。
答案 1 :(得分:3)
在浏览器中,所有JavaScript代码在您离开页面时都会中止,并在您打开页面时运行。因此,当您重新加载页面时,超时将被清除并再次设置。
如果你想要暂停超时,你可以:
localStorage
(允许您在客户端计算机上保留数据)以跟踪上次调用该函数的时间,并在加载时适当设置超时答案 2 :(得分:0)
当你重新加载浏览器时,html,css和javascript会被重新评估,作为构建DOM和渲染树的一部分。因此,定时器功能的每个实例都在页面重新加载时进行处理。所以,不,你不会最终得到该函数的多个实例。