使用后台脚本的Firefox扩展插件选项卡

时间:2014-12-15 15:37:49

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

我有一个firefox扩展,打开一个带有html文件的选项卡,该文件位于我的数据文件夹中。 main.js执行此操作:

 function handleClick(state) {
   tabs.open("login.html");
  }

在main.js中,我需要()一堆脚本作为后台脚本运行。此html文件充当扩展程序的“登录名”。这个html页面如何访问后台脚本?

1 个答案:

答案 0 :(得分:2)

它不能。您需要将内容脚本附加到登录页面,并以标准方式using port向其发送变量。

此外,您的代码是否有效?您是否需要require(sdk/self).data才能访问login.html

以下是您可以做的一个例子。

<强> main.js

const { data } = require('sdk/self');

function handleClick(state) {
  tabs.open({
    url: data.url('login.html'),
    onOpen: function(tab) {
      var worker = tab.attach({
        contentScriptFile: data.url('login.js')
      });
      worker.port.emit('foo', foo);
      worker.port.on('bar', handleBar);
    }
  });
}

function handleBar(bar) {
  // do something with bar;
}

<强> login.js

self.port.on('foo', function(foo) {
  // do something with foo
});

self.port.emit('bar', bar);