0

我尝试制作 Firefox 扩展,显示两个按钮:1 和 2。当您按下 button1 以 var path 获取值时,即当前打开页面的地址,然后新选项卡正在打开变为活动状态。在此选项卡中有 button2,它允许放置 var 路径的(innerHTML)值(第一个选项卡的此地址)。现在的问题是: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 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)并从 gogle 中按下按钮 1 时,它将打开新选项卡,并且 kuku.path 的值将是 google 地址。但是接下来,当我在 facebook 中按下 button1 时,值将更改为 facebook 地址,并且在这两个新打开的页面中将是相同的。我希望,我没有让你感到头晕;)

4

1 回答 1

0

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

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

于 2009-08-21T14:33:26.287 回答