2015-03-08 2 views
1

Мое расширение Chrome использует jQuery на странице фона, для таких вещей, как, jQuery.ajax(), jQuery.deferred() (не DOM-манипуляционный материал, который не имеет смысла в фоновом режиме страница).Портирование расширения Chrome с помощью jQuery для Firefox SDK Дополнения

Перенастройка этот код в Firefox SDK Add-on, нет фона window объект, который JQuery требует, чтобы работать, так что-то вроде

var $ = require('../3rdparty/jquery.min')(window); 

который, как JQuery работает в CommonJS-среде, не получится, сам JQuery выбрасывая исключение jQuery requires a window with a document.

Есть ли способ использовать jQuery в дополнении к Firefox на основе SDK? 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.

Смежные вопросы