3

我正在将一个扩展从 Google Chrome 移植到 Firefox 的 Addon SDK (v1.9)。由于它在后台页面(Firefox 上的 main.js)上使用 jQuery,我想在 Firefox 版本上也使用该库。但是,由于无法从插件代码本身访问 window 对象(并且 jQuery 广泛基于此),我想知道是否有更好的方法从插件代码实现 jQuery 库。也许有一种方法可以使用“require('jquery')”将 jQuery 作为模块导入。

澄清一下,我知道如何在内容脚本上实现 jQuery。我想要做的是在插件代码本身上使用 jQuery,例如“main.js”(或您给背景“主”模块提供的任何名称)。

4

2 回答 2

2

结论是不可能(或很难)包括在内。

但是,如前所述,在大多数情况下它是没有意义的(因为我们无法从后台页面访问 window 对象)。

于 2012-11-06T21:13:29.320 回答
1

我还将一个扩展从 Chrome 移植到 Firefox,并设法想出了这个:

var {Cc, Ci} = require("chrome");
_window = Cc["@mozilla.org/appshell/appShellService;1"]
    .getService(Ci.nsIAppShellService).‌​hiddenDOMWindow;

$ = require('jquery')(_window);

这里有更多细节。

如今,jQuery 在非 DOM 上下文中有很多用途,尤其是 Deferreds 和 ajax 的东西,以及像 extend 之类的实用程序。必须将跨浏览器的 jQuery 代码重写为特定于 Firefox 的代码,例如请求模块,这将是令人沮丧的。

于 2015-03-14T21:34:15.067 回答