1

在我使用附加 SDK 的 Firefox 附加组件中,我试图从data目录中包含两个库文件main.js,但它不起作用。

我有以下目录结构:

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

lib
-- main.js

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

我也想使用 jQuery 和mylibrary.jsin main.js,但这不起作用。

我尝试过的各种事情都会导致错误消息“ReferenceError:[mylibrary.js 中的类] 未定义”、“ModuleNotFoundError:无法满足:require(mylibrary.js)”和“无权加载”。

我尝试移动mylibrary.js和复制jquery-latest.min.jslib,但这导致了这些错误消息之一。

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

注意:我想在其中使用 jQuery 的原因main.js是因为 - 在一个由. 创建这些对象并创建 div是更好的做法吗?在这种情况下,这会起作用:我会加载到using . 在这种情况下,将创建中定义的类的对象,这似乎不像我喜欢的做事方式那样好的设计。pagemodscript.jsmain.jspagemodscript.jspagemodscript.jsmylibrary.jspagemodscript.jscontentScriptFilepagemodscript.jsmylibrary.js

4

1 回答 1

3

我也想使用 jQuerymylibrary.jsmain.js

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

我想main.js在当前页面添加一个 div

您应该向您的内容脚本 ( pagemodscript.js) 发送一条消息,并让它为您创建 div。这就是它与附加 SDK 一起工作的方式。

于 2012-04-27T22:06:26.430 回答