是否有可能在标签内创建firefox插件ui?

时间:2014-07-12 06:32:19

标签: javascript firefox-addon firefox-addon-sdk

我有一个Chrome插件,我想移植到Firefox。这个插件有一个复杂的UI,占用整个页面,打算长时间打开和使用,以及在浏览器中打开的其他页面。在chrome我只打开“.html”插件接口文件,它可以访问所有插件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分开注入javascript代码(非常糟糕,因为这在chrome中是完全不可能的,我将无法对两个插件使用相同的代码)或使用某种特殊类型的{{1}那么它会全屏吗?

1 个答案:

答案 0 :(得分:1)

您可以在选项卡中打开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() {}
        });
      }
    });
  }
});

它很难看,但它应该可以工作(总的来说,我并没有真正尝试过示例代码)。