在我使用附加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.js
将pagemodscript.js
加载到contentScriptFile
。在这种情况下,pagemodscript.js
将创建mylibrary.js
中定义的类的对象,这似乎不像我喜欢做的那样好。
答案 0 :(得分:3)
我还想在
中使用jQuery和mylibrary.js
main.js
这对你没有任何好处。 jQuery期望在窗口中运行并与DOM一起工作。扩展文件在完全不同的环境中执行 - 没有可访问的窗口,并且一些典型的窗口功能不可用。此外,不允许扩展文件访问DOM,所有网页访问都必须在内容脚本中进行。
我希望
main.js
将div添加到当前页面
您应该向内容脚本(pagemodscript.js
)发送消息,然后让它为您创建div。这就是Add-on SDK的工作原理。