2011-04-08 138 views
1

我試圖在用戶單擊瀏覽器操作時執行JavaScript代碼到網頁。它工作得很好,當我試圖把它放在背景頁面上時,它搞砸了。 我想要執行一次特定的代碼,並再次單擊圖標時,運行不同的代碼。我試圖做到以下幾點。Chrome擴展問題與後臺頁面

//Background page 
<Script> 
    function goNow() { 
     var live = 2; 
     chrome.tabs.executeScript(null, 
           {code:"Code"}); 
    } 

    function Shutdown(){ 
     var live = 1; 
     chrome.tabs.executeScript(null, 
            {code:"Code"}); 
    } 

    function runLive(live){ 
     if (live==1) {goNow()} 
     else {Shutdown()} 
    } 

    chrome.browserAction.onClicked.addListener(runLive) 

</script> 

當然,'代碼'是JavaScript代碼,在注入頁面時工作得很好。

+2

如果你要回滾人的合法編輯,至少解決您的拼寫和語法錯誤。 – 2011-04-09 21:59:51

回答

3
  • chrome.browserAction.onClicked.addListener傳遞一個標籤對象的回調函數,你不能只是通過你自己的參數那裏。

  • 聲明一個函數內部的變量(使用var關鍵字)使其僅在此函數中可用。

你的代碼應該是這樣的:

//global variable 
var live = 1; 

function goNow() { 
    live = 2; 
    chrome.tabs.executeScript(null, {code:"Code"}); 
} 

function Shutdown(){ 
    live = 1; 
    chrome.tabs.executeScript(null, {code:"Code"}); 
} 

function runLive(tab){ 
    if(live==1){goNow()} 
    else{Shutdown()} 
} 

chrome.browserAction.onClicked.addListener(runLive); 
+0

它的工作原理,謝謝。我仍然不明白爲什麼在runLive函數中使用'tab'。 – Ariel 2011-04-09 06:55:46

+1

@Ariel如果你看看API,它會列出哪些參數將被髮送到這個回調函數。您可以隨意調用此參數,但它將包含一個選項卡。 – serg 2011-04-09 16:25:56

相關問題