Расширение Chrome Dev: обновление переменных JavaScript в background.html - PullRequest
0 голосов
/ 06 ноября 2011

У меня есть рабочее расширение, и теперь я пытаюсь добавить некоторые опции / возможности!

У меня есть фоновая страница, которая отслеживает «состояние» каждой вкладки (переменные javascript для каждой вкладки, которые содержат параметры / настройки).Теперь я хочу иметь файл popup.html, который будет иметь 1 опцию, ползунок времени.Меня не интересует слайдер или любой HTML / CSS.Моя проблема в том, что я не уверен, как передать новый параметр на фоновую страницу.

Моя фоновая страница содержит такой код:

chrome.browserAction.onClicked.addListener(function(tab) {    
    Init(tab);
});

...

function Init(tab)
{
    chrome.tabs.sendRequest(tab.id, 
    {
        'TurnOffTimer': false, 
        'TimerIsOn': TimerIsOn, 
        'Interval': Interval,
        'RefreshRate': RefreshRate
    }, responseCallback);
}

TimerIsOn, Interval и RefreshRateпеременные javascript на той же странице.

Что мне нужно знать, так это как после установки ползунка (который объявлен в popup.html) и нажатия пользователем кнопки «ОК» значение таймера может бытьотправляется в background.html для хранения в соответствующей переменной javascript, и функциональность расширения может быть обновлена.Я могу создать другую функцию с именем Update, которая примет это обновленное значение и запустится, но мне нужно знать, как я могу вызвать функцию Update из popup.html, если она объявлена ​​в background.html.

Надеюсь, яимеет смысл, но если разъяснение необходимо, не стесняйтесь спрашивать.

1 Ответ

1 голос
/ 06 ноября 2011

Вы можете напрямую получить доступ к фоновому объекту window из всплывающего окна с помощью chrome.extension.getBackgroundPage(). Таким образом, чтобы изменить вар в bg page из всплывающего окна, вы можете просто позвонить:

chrome.extension.getBackgroundPage().Interval = 5;

Вам нужно будет немного изменить расширение, так как после того, как всплывающее окно прикреплено к кнопке действия браузера, chrome.browserAction.onClicked слушатель больше не будет запускаться. Вам нужно будет вызвать Init из всплывающего окна вручную аналогичным образом:

chrome.extension.getBackgroundPage().Init();

А внутри Init() вручную получить идентификатор выбранной вкладки, так как он больше не будет передаваться.

...