2011-11-06 53 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

相关问题