变量地狱 - 变量和标签的问题(firefox扩展)

时间:2009-08-21 12:09:00

标签: javascript var

我尝试进行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地址,并且在这两个新打开的页面中将相同。 我希望,我不会让你感到头晕;)

1 个答案:

答案 0 :(得分:0)

有很多方法可以在窗口之间共享数据,最简单的方法是使用燃料应用程序对象。

我认为,另一种适合您问题的方法是使用setUserData / getUserData方法。