在Firefox附加组件的main.js中包含数据目录中的库

时间:2012-04-27 21:33:45

标签: firefox-addon firefox-addon-sdk

在我使用附加SDK的Firefox插件中,我试图在data中的main.js目录中包含两个库文件,但它无效。

我有以下目录结构:

data
-- jquery-latest.min.js
-- pagemodscript.js
-- mylibrary.js

lib
-- main.js

pagemodscript.js使用jQuery,这有效(使用contentScriptFile)。

我还想在mylibrary.js中使用jQuery和main.js,但这不起作用。

我尝试了各种各样的错误消息“ReferenceError:[mylibrary.js中的类]未定义”,“ModuleNotFoundError:无法满足:require(mylibrary.js)”,并且“无权加载”

我尝试移动mylibrary.js并将jquery-latest.min.js复制到lib,但这导致了其中一条错误消息。

设置它的最佳方法是什么?

注意:我想在main.js中使用jQuery的原因是 - 在pagemodscript.js生成的事件之后 - 我希望main.js将div添加到当前页面中将显示由pagemodscript.js生成的另一个事件创建的对象列表。更好的做法是让pagemodscript.js创建这些对象并创建div?在这种情况下,这可行:我使用mylibrary.jspagemodscript.js加载到contentScriptFile。在这种情况下,pagemodscript.js将创建mylibrary.js中定义的类的对象,这似乎不像我喜欢做的那样好。

1 个答案:

答案 0 :(得分:3)

  

我还想在mylibrary.js

中使用jQuery和main.js

这对你没有任何好处。 jQuery期望在窗口中运行并与DOM一起工作。扩展文件在完全不同的环境中执行 - 没有可访问的窗口,并且一些典型的窗口功能不可用。此外,不允许扩展文件访问DOM,所有网页访问都必须在内容脚本中进行。

  

我希望main.js将div添加到当前页面

您应该向内容脚本(pagemodscript.js)发送消息,然后让它为您创建div。这就是Add-on SDK的工作原理。