setInterval not working (firing only once) in Goog

2019-01-18 22:44发布

问题:

Just as the title says: setInterval is only firing its callback once.

manifest.json:

{
    //...
    "content_scripts" : [{
        "js" : ["code.js"],
        //...
    }],
    //...
}

code.js (example):

setInterval(alert('only shown once'),2000);

Why, and how I could fix it? The code works well outside of an extension (even in a bookmarklet).

回答1:

setInterval(function() { alert('only shown once') },2000);

You need to pass a function reference like alert and not a return value alert()



回答2:

setInterval isn't working at all.

The first argument should be a function, you are passing it the return value of alert() which isn't a function.

Use the three argument version:

setInterval(function,time,array_of_arguments_to_call_function_with);
setInterval(alert,2000,['only shown once']);


回答3:

The way you wrote it it's wrong:

setInterval() wants a function and a numerical value: setInterval(function(){//your code}, timeInterval).