由于某些原因,以下代码不起作用:
main.js:
var data = require('self').data;
var {Cc, Ci} = require('chrome');
var mediator = Cc['@mozilla.org/appshell/window-mediator;1'].getService(Ci.nsIWindowMediator);
var self = require('self');
exports.main = function(options, callbacks)
{
var tabs = require('sdk/tabs');
tabs.on("ready",
function (activeTab)
{
activeTab.attach({contentScriptFile: [self.data.url("inject.js")]});
}
);
};
inject.js:
var test = require("test");
test.five();
在root-addon-folder / lib下的test.js:
exports.five = function ()
{
window.alert("high five!");
};
这里提到turiral:https://addons.mozilla.org/en-US/developers/docs/sdk/latest/dev-guide/tutorials/reusable-modules.html 最新更改:http://blog.mozilla.org/addons/2013/01/25/changes-to-require-syntax/
我正在使用Mozilla的在线构建器。
答案 0 :(得分:2)
您的inject.js
是内容脚本。内容脚本无法使用require
,只有main.js
等特权模块可以使用。
内容脚本没有等效的require
机制,但您可以一次从多个data
文件加载脚本。
只需从exports
中删除test.js
位,然后将该文件放在data
文件夹中:
function five() {
window.alert("high five!");
}
然后更改您的attach
电话:
activeTab.attach({contentScriptFile: [
self.data.url("test.js"),
self.data.url("inject.js")
]});