setInterval не работает (срабатывает только один раз) в расширении Google Chrome - PullRequest
13 голосов
/ 23 января 2012

Как и в заголовке: setInterval запускает свой обратный вызов только один раз.

manifest.json:

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

code.js (пример):

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

Почему и как я мог это исправить?Код хорошо работает вне расширения (даже в букмарклете).

Ответы [ 3 ]

33 голосов
/ 23 января 2012
setInterval(function() { alert('only shown once') },2000);

Вам необходимо передать ссылку на функцию, например alert, а не возвращаемое значение alert()

6 голосов
/ 23 января 2012

setInterval не работает вообще.

Первый аргумент должен быть функцией , вы передаете ему возвращаемое значение alert(), которое не является функцией.

Используйте версию с тремя аргументами:

setInterval(function,time,array_of_arguments_to_call_function_with);
setInterval(alert,2000,['only shown once']);
1 голос
/ 23 января 2012

То, как вы это написали, неверно:

setInterval() хочет получить функцию и числовое значение: setInterval(function(){//your code}, timeInterval).

...