javascript - 是否可以在选项卡内创建 firefox 插件 ui?

标签 javascript firefox-addon firefox-addon-sdk

我有一个 chrome 插件,我想移植到 Firefox。这个插件有一个复杂的用户界面,它占据了整个页面,它的目的是打开和使用很长一段时间,以及在浏览器中打开的其他页面。在 chrome 中,我只打开“.html”插件接口(interface)文件,它可以访问所有插件 api:与插件脚本等通信。但是如果我在 firefox 插件中打开“.html”文件:

var root = data.url('icon.png').split('/').slice(0, -2).join('/');
widget.Widget({
  id: 'my-addon',
  label: 'my addon',
  contentURL: data.url('icon.png'),
  onClick: function() {
    tabs.open([root, 'lib', 'control.html'].join('/'));
  }
});

页面内的 javascript 代码似乎无法访问 this.port 对象进行通信。创建全页插件界面的正确方法是什么?我是否需要通过 contentScriptFile 分别注入(inject) javascript 代码(非常糟糕,因为这在 chrome 中是完全不可能的,我将无法为两个插件使用相同的代码)或使用某种特殊类型的 Panel 所以它会全屏吗?

最佳答案

您可以在选项卡中打开 html 页面,然后使用 tab.attach附上实际的脚本。这样,您的脚本将是可以访问内容脚本 API 的实际内容脚本。

widget.Widget({
  id: 'my-addon',
  label: 'my addon',
  contentURL: data.url('icon.png'),
  onClick: function() {
    tabs.open({
      url: data.url("control.html"),
      onOpen: function(tab) {
        tab.attach({
          contentScriptFile: [data.url("control.js")],
          onMessage: function() {}
        });
      }
    });
  }
});

它很难看,但它应该可以工作(一般来说,我并没有实际尝试示例代码)。

关于javascript - 是否可以在选项卡内创建 firefox 插件 ui?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24710332/

相关文章:

javascript - 使用 JQuery 从 PSD 图层创建动画帧

firefox-addon - 写入自己的日志文件的 Firefox 扩展

selenium - 使用 Selenium IDE Firefox 插件的截图

javascript - 作为内容脚本加载的缩小版 AngularJS 应用程序能够发出 XHR 请求吗?

javascript - Firefox 扩展将 Javascript 数组作为对象发送

Firefox SDK 示例附加导出的 XPI 操作按钮不显示

javascript - Ember - 如何将 this.get ('model' ) 转换为 js 对象

javascript - 隐藏/保护 Windows 8 应用程序中的 Javascript 源代码

javascript - 将 Pig Latin JavaScript 函数转换为 GUI 时遇到问题

javascript - 如何获取 Firefox 调试器监视的目标元素?