web-dev-qa-db-ja.com

GoogleでsetIntervalが機能しない(1回だけ起動する)Chrome拡張機能

タイトルにあるように、setIntervalはコールバックを1回だけ起動します。

マニフェスト.json:

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

code.js(例):

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

なぜ、そしてどうすればそれを修正できますか?コードは拡張機能の外で(ブックマークレット内でも)うまく機能します。

13
Camilo Martin
_setInterval(function() { alert('only shown once') },2000);
_

戻り値alert()ではなくalertのような関数参照を渡す必要があります

33
qwertymk

setIntervalがまったく機能していません。

最初の引数はfunctionである必要があり、関数ではないalert()の戻り値を渡します。

3つの引数バージョンを使用します。

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

あなたがそれを書いた方法は間違っています:

setInterval()には、関数と数値が必要です:setInterval(function(){//your code}, timeInterval)

1
Dario