我正在开发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);
}

09-26 19:04