Проблема расширения Chrome с фоновой страницей - PullRequest
1 голос
/ 09 апреля 2011

Я пытаюсь выполнить код 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 Ответ

3 голосов
/ 09 апреля 2011
  • 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...