我正在开发Chrome扩展程序,它需要在固定的时间段内运行一个功能,以便它可以与动态页面一起使用。
我使用过setInterval
但它只执行了一次该函数,如果它被修改为以下内容:
function sumfunc(){
document.body.innerHTML = dosumthin(document.body.innerHTML,false);
setInterval(sumfunc(),1000);
}
填充调用堆栈时会使页面滞后,使页面看起来像是从未完成加载。
答案 0 :(得分:2)
删除()
:
setTimeout(sumfunc,1000);
setTimeout()
的第一个参数采用函数定义,而不是执行函数定义。
当您在sumfunc
内执行sumfunc
时,这将导致立即无限递归,这可能会导致堆栈溢出,如您所述。
因此请使用以下代码替换您的代码:
function sumfunc(){
document.body.innerHTML = dosumthin(document.body.innerHTML,false);
setTimeout(sumfunc,1000);
}
答案 1 :(得分:1)
只需使用setInterval
:
function sumfunc(){
document.body.innerHTML = dosumthin(document.body.innerHTML,false);
}
window.setInterval(sumfunc,1000);
答案 2 :(得分:0)
页面滞后,因为每次超时开始时它都会再次调用超时。您必须在函数之外设置超时,如下所示:
setInterval(sumfunc,1000);
function sumfunc(){
document.body.innerHTML = dosumthin(document.body.innerHTML,false);
}
答案 3 :(得分:0)
您需要一个间隔而不是超时。
function sumfunc(){
document.body.innerHTML = dosumthin(document.body.innerHTML,false);
}
setInterval(sumfunc, 1000);