11

正如標題所示:setInterval僅觸發一次回調。在Chrome瀏覽器擴展中,setInterval無法正常工作(只觸發一次)

manifest.json的:

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

code.js(例如):

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

爲什麼,以及如何我可以修復它?代碼在擴展之外運行(甚至在書籤中)。

+1

可能重複的[JS setInterval只執行一次](http://stackoverflow.com/questions/7746505/js-setinterval-executes-only-once) – qwertymk

回答

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

你需要傳遞一個函數引用像alert,而不是一個返回值alert()

+0

哦,你說得對。其他地方還有一個問題,我試圖用警報來檢查它是否草率。實際代碼中有一個參考。 –

+0

你能解釋爲什麼這樣做的方式呢?我對JavaScript比較陌生,希望儘可能多地學習它。 @qwertymk – J2N

+0

@JLaw [**看看這個答案更好的解釋**](http://stackoverflow.com/a/7746522/465546) – qwertymk

6

setInterval是不工作的。

第一個參數應該是函數,你傳遞它的返回值是alert()這不是函數。

使用三個參數版本:

setInterval()想要一個函數和數值:setInterval(function(){//your code}, timeInterval)

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

哦,你說得對。其他地方還有一個問題,我試圖用警報來檢查它是否草率。實際代碼中有一個參考。 –

1

你寫它的錯誤的方式。

+0

你說得對。其他地方還有一個問題,我試圖用警報來檢查它是否草率。實際代碼中有一個參考。 –

相關問題