我尝试进行firefox扩展,显示两个按钮:1和2.当你按下button1到var path获取值时,即当前打开页面的地址,然后新标签打开变为活动状态。在这个选项卡中有button2,允许放入(innerHTML)var路径的值(第一个选项卡的这个地址)。现在问题是:button1使用函数open()而button2使用save(),但第一个函数中的var不存在于kuku.save()
这是我的代码:
function openTab() {
//Save an address of current page
path=content.location.href;
//Open new Tab and select it
var tab=gBrowser.addTab("http://www.google.com");
var newTabBrowser = gBrowser.getBrowserForTab(tab);
gBrowser.selectedTab=tab;
}
function write() {
content.body.innerHTML=path;
}
当按下正确的按钮时,函数openTab()
执行,与write()
函数相同。问题是,如何保存到var这个地址,因为如果我从第一个函数执行它,来自按钮的函数没有这个var。在此之后我尝试这段代码:
var path = null;
function openTab() {
//Save an address of current page
path=content.location.href;
//Open new Tab and select it
var tab=gBrowser.addTab("chrome://intabeditor/content/editor.html");
var newTabBrowser = gBrowser.getBrowserForTab(tab);
gBrowser.selectedTab=tab;
}
function write() {
if (path!=null)
content.body.innerHTML=path;
}
但是这段代码也很糟糕。 我想,问题是因为路径是局部变量,所以我尝试使用“更全局”的var:
var kuku = {};
kuku.path = "";
kuku.open = function () {
kuku.path = content.location.href;
//The rest of the code here
};
kuku.save = function () {
content.body.innerHTML=kuku.path;
};
在此示例中,button1使用kuku.open(),button2 kuku.save()
它可以工作,每个浏览器只有一个标签。我的意思是,当用户按下第A页上的button1和第B页上的button1时,这两个新打开的页面将具有相同值的var路径。当您按其他站点上的按钮时,它将覆盖路径的最后一个值。例如:当我打开2个标签(google.com和facebook.com)时,我会按下按钮1,它会打开新标签,kuku.path的值将是google adddress。但接下来,当我按下facebook中的button1时,值将更改为facebook地址,并且在这两个新打开的页面中将相同。 我希望,我不会让你感到头晕;)
答案 0 :(得分:0)
有很多方法可以在窗口之间共享数据,最简单的方法是使用燃料应用程序对象。
我认为,另一种适合您问题的方法是使用setUserData / getUserData方法。