2012-03-28 8 views
6

Estoy usando jquery (ui también) en mi extensión ff. Todo funciona bien hasta ff 10.Cargando jquery UI en FF 11 da error :: "TypeError: a no está definido"

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()); 
    } 

En FF 11 este código no funciona. Según el código anterior, estoy tratando de cargar el jquery y luego cargar el jquery ui libs. Jquery se está cargando pero no carga el "chrome: //myext/content/js/jquery.ui.core.min.js" y da error "TypeError: a no está definido"

Cualquier ayuda sería ser appriciated

+2

¿Usted consigue una mejor error al cargar la versión no minified? ¿Por qué está pasando el objeto jQuery a la llamada? ¿Eso requeriría que los cambios en el código de la UI funcionen? Supongo que quiere decir que quiere que el parámetro jQuery que utiliza en la llamada de la función de envoltura sea su jQ, pero me sorprendería si esa fuera la sintaxis para hacerlo. ¿Funciona si lo cargas en 'wnd'? – Rup

+0

No No funciona usando wnd. – MKumar

+0

También es una forma estándar de cargar jquery en extensión. http://forums.mozillazine.org/viewtopic.php?f=19&t=2105087 – MKumar

Respuesta

2

que tenían un error similar, pero poniendo loadSubScript en esta posición que trabajó para mí:

//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

Entonces, ¿la posición de Dinesh de * loadSubScript * es incorrecta? ¿Por qué debería ser de otra manera y cómo lo cambiarías? – xralf

+0

Bueno, no está del todo claro para mí, pero cuando tuve el error ("Error de tipo: $ no está definido"), la fila con _loadSubScript_ estaba justo debajo de la que tenía _var jQuery_. Lo moví después de mis definiciones locales de $, y luego funcionó. No tengo un conocimiento profundo de cómo funciona _loadSubScript_ y no sé cómo se gestiona el alcance, pero parece que poner esa fila después de $ declaraciones agrega $ al alcance del complemento. Tal vez alguien más experto que yo aclare este aspecto, pero puedo decirles que ahora está funcionando ... y podría ser lo mismo para Dinesh, incluso con un complemento diferente. – liv913

+0

Hola, lo he intentado con jquery UI y no funciona ... entonces mi solución no es buena en este caso. – liv913

Cuestiones relacionadas