【问题标题】:How to include Jquery in the background script (not the content script) for my Firefox Jetpack Addon?如何在我的 Firefox Jetpack 插件的后台脚本(而不是内容脚本)中包含 Jquery?
【发布时间】:2012-06-19 02:56:50
【问题描述】:

我正在将 Chrome 扩展程序移植到 Firefox。在 Chrome 扩展中,后台脚本包括 JQuery,它在整个后台脚本中用于 AJAX。

使用 Firefox Jetpack SDK,看起来我可以做到:

require("modulename")

但这仅适用于 modulename 是 firefox 扩展模块,包括代码:

exports.someVar = someLocalVar

为了使模块功能在其他地方可用。显然 JQuery 并没有像这样设置为模块,所以没有办法要求它。

有没有办法在我的 Firefox 插件后台的 lib/main.js 文件中包含 JQuery,以便我可以在我的 main() 函数中访问 JQuery?

【问题讨论】:

  • 你对main.js中的jQuery有什么要求? jQuery 是用来访问 DOM 的,main.js 却无法访问 DOM。

标签: jquery firefox-addon firefox-addon-sdk


【解决方案1】:

自从发布此消息以来,我已经认识到这是一项徒劳的努力。正如 Wladimir Palant 在 cmets 中指出的那样,JQuery 旨在访问 DOM。由于 main.js 文件没有窗口或文档对象,所以这个功能完全没用。

我原本打算将 JQuery 用于 AJAX,它在 Chrome 后台脚本中可以正常工作,但是 Firefox 插件没有 XMLHttpRequest 对象,所以 JQuery 在这里也毫无用处。正确的解决方案是改用 firefox Request() API 重写我的代码。

如果您想在 CommonJS 应用程序中包含 JQuery,我发现了这个项目,它将 JQuery 放入一个模块中,假设您定义了窗口、文档和 XMLHttpRequest:https://github.com/jakobmattsson/commonjs-jquery

【讨论】:

  • 我还要补充一点,如果您需要请求 API 不支持的 DELETE HTTP 方法(如我所做的),您可以使用较低级别的 xhr API。只需像在 Firefox 中使用 XMLHttpRequest 一样使用 require('xhr').XMLHttpRequest。
  • 我需要将我自己的脚本(这是一个“内容”脚本吗?)以及 jquery “注入”到当前网页中,以便我可以使用我的插件脚本与它们进行交互。你指的这个github脚本,是这样的吗?
  • 嗨 BGM,这个答案不是指后台脚本。您需要使用 tab.attach 方法在页面上运行脚本。见blog.mozilla.org/addons/2011/09/01/…
  • 谢谢你的建议,特拉维斯。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-03-19
  • 1970-01-01
  • 2017-10-20
  • 1970-01-01
  • 1970-01-01
  • 2016-10-03
  • 1970-01-01
相关资源
最近更新 更多