2011-04-08 141 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

相关问题