1

由于某些原因,以下代码不起作用:

主.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")]});
            }
        );
};

注入.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 的在线 Builder。

4

1 回答 1

2

inject.js是一个内容脚本。内容脚本不能使用require,只能使用特权模块,例如main.jscan。

内容脚本没有等效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")
]}); 
于 2013-11-07T16:27:19.360 回答