2015-03-08 86 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錯誤。