重新加载页面时是否会停止JavaScript setTimeout函数?

时间:2012-03-08 15:10:53

标签: javascript javascript-events

如果我从触发器启动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 )
}

3 个答案:

答案 0 :(得分:4)

当重新加载页面时,“先前”计时器将被丢弃,并且将启动一个新计时器。

答案 1 :(得分:3)

在浏览器中,所有JavaScript代码在您离开页面时都会中止,并在您打开页面时运行。因此,当您重新加载页面时,超时将被清除并再次设置。

如果你想要暂停超时,你可以:

  • 使用不重新加载的父框架
  • 使用localStorage(允许您在客户端计算机上保留数据)以跟踪上次调用该函数的时间,并在加载时适当设置超时

答案 2 :(得分:0)

当你重新加载浏览器时,html,css和javascript会被重新评估,作为构建DOM和渲染树的一部分。因此,定时器功能的每个实例都在页面重新加载时进行处理。所以,不,你不会最终得到该函数的多个实例。