2014-10-01 61 views
2

我使用Add-on SDK构建Firefox Addon,并且需要导入lib/main.jslinq.js库,该库会公开Enumerable对象。在Firefox Addon中导入linq.js

此库应导入lib/main.js,因为我需要的是一个只运行一次的脚本(如Chrome扩展的相应background.js文件)。

我到目前为止所尝试的是将linq.js作为contentScriptFile加载,但在尝试使用Enumerable对象时出现错误。

这里是我的代码:

var data = require("sdk/self").data; 
var pageMod = require("sdk/page-mod"); 

pageMod.PageMod({ 
    include: "*", 
    contentScriptWhen: 'start', 
    contentScriptFile: [data.url("linq.js")] 
}); 

console.log(Enumerable); 

将返回:

​​

任何提示?谢谢。

回答

0

您将linq.js作为内容脚本添加到页面中,而不是将其导入到main.js文件中。有关内容脚本如何工作的更多信息,请拨打see the docs

使用你的榜样,如何做到这一点的实际工作是这样的:

main.js:

var data = require("sdk/self").data; 
var pageMod = require("sdk/page-mod"); 

pageMod.PageMod({ 
    include: "*", 
    contentScriptWhen: 'start', 
    contentScriptFile: [data.url("linq.js"), data.url("myscript.js")] 
}); 

在 'myscript.js',然后你可以使用linq.js:

console.log(Enumerable); 

在这一点上,你可以在你的代码中使用linq.js来对这些脚本所附的页面进行操作。