我正在开发Chrome扩展程序,它需要在固定的时间段内运行某个功能,以便它可以处理动态页面。
我已经使用过setInterval
,但是它只执行一次功能,并且如果将其修改为以下内容:
function sumfunc(){
document.body.innerHTML = dosumthin(document.body.innerHTML,false);
setInterval(sumfunc(),1000);
}
它会在填充调用堆栈时滞后页面,并使其看起来好像页面永远无法完成加载。
最佳答案
删除()
:
setTimeout(sumfunc,1000);
setTimeout()
的第一个参数采用函数定义,而不是函数定义。正如您所描述的那样,在
sumfunc
中执行sumfunc
时,这将导致立即无限递归,这可能会导致堆栈溢出。因此,将代码替换为以下内容:
function sumfunc(){
document.body.innerHTML = dosumthin(document.body.innerHTML,false);
setTimeout(sumfunc,1000);
}