2011-11-06 28 views
0

我有一個工作擴展,現在我試圖添加一些選項/功能!Chrome擴展Dev:更新background.html中的javascript變量

我有一個背景頁面,跟蹤每個選項卡(每個選項卡的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,間隔和刷新率都在同一頁上的JavaScript變量。

我需要知道的是如何,一旦滑塊(在popup.html聲明)設置和用戶點擊「OK」,定時器的值可以被髮送到background.html被存儲在適當的javascript變量,並且可以更新擴展功能。我可以創建另一個名爲Update的函數,它將獲取這個更新後的值並運行,但是我需要知道如何在background.html中聲明從popup.html中調用Update函數。

希望我有道理,但如果澄清是必要的,隨時問。

回答

1

您可以直接從chrome.extension.getBackgroundPage()彈出窗口中直接訪問背景頁面的window對象。因此,從彈出的頁面BG改變某些變種可以只要致電:

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

你需要改變你的擴展了一下,因爲一旦你有彈出連接到瀏覽器的操作按鈕,chrome.browserAction.onClicked監聽不會被解僱了。您將需要以類似的方式手動調用Init從彈出:

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

而且裏面Init()手動得到選中的標籤ID,因爲它不會再被通過。

+0

太棒了!感謝您的快速回復。一旦我離開工作,我會給它一個鏡頭,並在這裏更新我的結果! – JesseBuesking

+0

經過一些修改(根據您的回覆),我現在有1個選項!真棒!再次感謝serg! – JesseBuesking