2012-03-28 13 views
6

Używam jquery (ui również) w moim rozszerzeniu ff. Wszystko działa poprawnie do 10 f.Ładowanie jquery UI w FF 11 daje błąd :: "TypeError: a jest niezdefiniowany"

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

loader.loadSubScript("chrome://myext/content/js/jquery-1.7.2.js",wnd); 

var jQ = wnd.jQuery.noConflict(true); 
    try { 
      loader.loadSubScript("chrome://myext/content/js/jquery.ui.core.min.js", jQ); 
    } catch (Except){ 
    alert(Except.toString()); 
    } 

W FF 11 ten kod nie działa. Zgodnie z powyższym kodem próbuję załadować jquery, a następnie ładowanie jquery ui libs. Jquery jest ładowany, ale nie ładuje "chrome: //myext/content/js/jquery.ui.core.min.js" i podaje błąd "TypeError: a is undefined"

Jakakolwiek pomoc być appriciated.

+2

Czy masz lepszą błąd wczytywania wersji non-minified? Dlaczego przekazujesz obiekt jQuery do rozmowy - czy to wymagałoby zmiany kodu interfejsu do działania? Zakładam, że chcesz, aby parametr jQuery, którego używa w wywoływaniu funkcji zawijania, był twoim jQ, ale byłbym zaskoczony, gdyby to była składnia, aby to zrobić. Czy to działa, jeśli załadujesz go do 'wnd'? – Rup

+0

Nie Nie działa przy użyciu polecenia wnd. – MKumar

+0

Jest to również standardowy sposób ładowania jquery w rozszerzeniu. http://forums.mozillazine.org/viewtopic.php?f=19&t=2105087 – MKumar

Odpowiedz

2

Miałem podobny problem, ale oddanie loadSubScript na tym stanowisku pracował dla mnie:

//load jQuery 

var loader = Components.classes["@mozilla.org/moz/jssubscript-loader;1"] 
         .getService(Components.interfaces.mozIJSSubScriptLoader); 
loader.loadSubScript("chrome://myext/content/lib/jquery-1.7.2.js",context); 
var jQuery = window.jQuery.noConflict(true); 

if(typeof(jQuery.fn._init) == 'undefined') { jQuery.fn._init = jQuery.fn.init; } 

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

myext.jQuery = jQuery; 
myext.$ = $; 

loader.loadSubScript("chrome://myext/content/lib/jquery.tablesorter.js",jQuery); 
+0

Czy pozycja Dinesh * loadSubScript * jest nieprawidłowa? Dlaczego powinien być inny sposób i jak byś to zmienił? – xralf

+0

Cóż, nie jest to dla mnie całkowicie jasne, ale: kiedy miałem błąd ("Błąd typu: $ jest niezdefiniowany"), wiersz z _loadSubScript_ był tuż poniżej tego z _var jQuery_. Przeniosłem go po moich lokalnych definicjach $, a następnie zadziałało. Nie mam głębokiej wiedzy o tym, jak _loadSubScript_ działa i nie wiem, w jaki sposób jest przez nią zarządzany zakres, ale wydaje się, że umieszczenie tego wiersza po $ deklaracjach dodaje $ do zakresu wtyczki. Może ktoś bardziej zaawansowany niż ja wyjaśni ten aspekt, ale mogę ci powiedzieć, że teraz działa ... i może być taki sam dla Dinesha, nawet z inną wtyczką. – liv913

+0

Witam, próbowałem z jquery UI i to nie działa ... więc moje rozwiązanie nie jest dobre w tym przypadku. – liv913

Powiązane problemy