我有一个firefox扩展,打开一个带有html文件的选项卡,该文件位于我的数据文件夹中。 main.js执行此操作:
function handleClick(state) {
tabs.open("login.html");
}
在main.js中,我需要()一堆脚本作为后台脚本运行。此html文件充当扩展程序的“登录名”。这个html页面如何访问后台脚本?
答案 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);