Chrome扩展程序问题与背景页面

时间:2011-04-08 20:57:06

标签: javascript google-chrome google-chrome-extension

我正在尝试在用户点击浏览器操作时对网页执行JavaScript代码。它工作得非常好,当我试图将它放在背景页面上时,它搞砸了。 我希望特定代码执行一次,当再次单击图标时,运行不同的代码。我试着做以下几点。

//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代码,在注入页面时效果非常好。

1 个答案:

答案 0 :(得分: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);