2015-03-08 132 views
1

我的Chrome扩展在后台页面中使用了jQuery,用于诸如jQuery.extend(),jQuery.ajax(),jQuery.deferred()(不是DOM操作的东西,它在后台没有意义页)。使用jQuery将Firefox扩展移植到Firefox SDK附加组件

迁移此代码为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对象。

安迪

回答

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错误。