我的Chrome扩展程序在后台页面中使用了jQuery,用于jQuery.extend()
,jQuery.ajax()
,jQuery.deferred()
等内容(不是DOM操作内容,在某些内容中没有意义)背景页。)
将此代码迁移到Firefox SDK Add-on,没有后台window
对象,jQuery需要这样做,所以
var $ = require('../3rdparty/jquery.min')(window);
jQuery在类似CommonJS的环境中工作的方式失败了,jQuery本身就抛出了jQuery requires a window with a document
异常。
有没有办法在基于Firefox SDK的插件中使用jQuery? Page Workers似乎很有希望,但我无法掌握潜在的window
对象。
安迪
答案 0 :(得分:2)
这有效:
var {Cc, Ci} = require("chrome");
_window = Cc["@mozilla.org/appshell/appShellService;1"]
.getService(Ci.nsIAppShellService).hiddenDOMWindow;
$ = require('../3rdparty/jquery')(_window);
然而,我不得不修补jQuery(2.1.3)本身,将第3441行更改为
window.setTimeout( jQuery.ready );
我有理由相信这是一个jQuery错误。
答案 1 :(得分:0)
谢谢安迪!它看起来很漂亮!
当我读到你不得不破解jQuery时,我开始提交一个修复程序,但事实证明有人那样做了!
https://github.com/jquery/jquery/commit/842958e7aecd0d75a7ee9e2aaec83457701aa2f3
它已经在jQuery 3.0.0-alpha1中发布了。