Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

setInterval not working (firing only once) in Google Chrome extension

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).

like image 348
Camilo Martin Avatar asked Jan 23 '12 12:01

Camilo Martin


2 Answers

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

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

like image 128
qwertymk Avatar answered Sep 26 '22 16:09

qwertymk


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']);
like image 43
Quentin Avatar answered Sep 24 '22 16:09

Quentin