如何在firefox扩展面板中创建链接,以便在浏览器窗口/选项卡中打开?

如何在firefox扩展面板中创建链接,以便在浏览器窗口/选项卡中打开?,firefox,firefox-addon,firefox-addon-sdk,Firefox,Firefox Addon,Firefox Addon Sdk,所以我正在开发我的第一个firefox插件,我有一个简单的面板,其中包含一些内容和链接。当我点击链接时,链接在面板中打开。我希望能够在firefox选项卡或窗口中打开此链接。我尝试搜索mozdev文档,但没有找到任何解决方案。如果每次都要打开一个新选项卡,您可以在链接中添加一个目标属性作为“空白”;或者拦截您在面板文档中所做的任何单击,然后向您的加载项代码发送消息,以打开选项卡。比如: document.documentElement.addEventListener("click", even

所以我正在开发我的第一个firefox插件,我有一个简单的面板,其中包含一些内容和链接。当我点击链接时,链接在面板中打开。我希望能够在firefox选项卡或窗口中打开此链接。我尝试搜索mozdev文档,但没有找到任何解决方案。

如果每次都要打开一个新选项卡,您可以在链接中添加一个目标属性作为“空白”;或者拦截您在面板文档中所做的任何单击,然后向您的加载项代码发送消息,以打开选项卡。比如:

document.documentElement.addEventListener("click", event => {
  let a = event.target.closest("a");

  if (a && a.href) {
    // replace `self` with `addon` if it's a trusted document and
    // it's not a `contentScriptFile`
    self.port.emit("open-link", a.href);
  }
});
const tabs = require("sdk/tabs");

let panel = Panel({ /* ... your panel ... */ });

panel.port.on("open-link", uri => tabs.open(uri));
然后在index.js或main.js中,您将看到如下内容:

document.documentElement.addEventListener("click", event => {
  let a = event.target.closest("a");

  if (a && a.href) {
    // replace `self` with `addon` if it's a trusted document and
    // it's not a `contentScriptFile`
    self.port.emit("open-link", a.href);
  }
});
const tabs = require("sdk/tabs");

let panel = Panel({ /* ... your panel ... */ });

panel.port.on("open-link", uri => tabs.open(uri));

它说失踪;在声明之前,让a=event.target.closesta;,。我不确定这段代码的语法是否正确。这可能取决于您使用的javascript版本。如果您在内容脚本中,应该可以。否则,除非使用type=text/javascript,否则将无法识别let;版本=1.8。在此上下文中,您还可以将let替换为var。谢谢,它成功了!它还需要添加event.preventDefault;停止面板中连杆打开的说明。