2012-04-03 5 views
2

Ich habe jQuery in einem Firefox-Addon geladen, was dazu führt, dass es mit XULs window geladen wird.Wie ändert man den Standardkontext von jQuery?

Ich möchte den Standardkontext ändern, so dass es das korrekte window Objekt verwenden wird.

Das klassische Beispiel habe ich immer sehen ist:

var $ = function(selector,context){ 
    return new jQuery.fn.init(selector,context|| correctWindow); 
}; 
$.fn = $.prototype = jQuery.fn; 

Aber tut es ich viele Funktionen töten, wie .ajax, .browser, ... ich diese Methoden benötigen.

AMO lasse ich nicht einen Wrapper zu jQuery erstellen, um das korrekte window Objekt zu senden.

So ist meine einzige Option, den Standardkontext von jQuery irgendwie zu ändern, ohne seinen Quellcode zu ändern.

Welche Optionen habe ich?

+0

möglich Duplikat [außer Kraft setzt Standard jQuery-Selektor Kontext] (http://stackoverflow.com/questions/3690447/override-default-jquery-selector-context) – BrunoLM

+0

vorherige Antwort, die helfen soll:
http: // Stackoverflow .com/a/3690529/437226 – ramblinjan

Antwort

1

Auf der ersten Content-Skript hinzugefügt I

var loader = Components 
    .classes["@mozilla.org/moz/jssubscript-loader;1"] 
    .getService(Components.interfaces.mozIJSSubScriptLoader); 

loader.loadSubScript("chrome://extensions/js/jquery-1.7.2.min.js"); 

var initjQuery = jQuery.fn.init; 
$.fn.init = function(s,c,r) { 
    c = c || window.document; 
    return new initjQuery(s,c,r); 
}; 

Auf diese Weise funktioniert.