2010-09-19 3 views
1

Je soupçonne que jQuery ne fonctionne pas ok dans mon extension ... J'utilise la version 1.3.2, chargée avec les lignes suivantes:Ajout d'un nœud avec jQuery dans une extension Firefox

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

Mon problème est que, lors de l'exécution des lignes suivantes, une étiquette comme 1 œuvres, le 2 soulève une erreur misterious « l est nulle » liée à jQuery:

jQuery.noConflict(); 
$ = function(selector,context){ return new jQuery.fn.init(selector,myext.doc); }; 
$.fn = $.prototype = jQuery.fn; 
$().ready(function() { 
    $("menuitem#a").attr("label","Value set by jQuery!");    // 1 
    $("menupopup#listacorsi").append("<menuitem label='newnode!'/>"); // 2 

}); 

Je suppose que la deuxième rangée devrait être bon d'ajouter un nœud enfant à l'élément #listacorsi. menuitem # a est un enfant de #listacorsi. Pourriez-vous s'il vous plaît m'aider à comprendre ce qui ne va pas avec mon codage?

Merci et meilleures salutations,

Livio

+0

Personnellement, j'avais seulement des problèmes avec les extensions jQuery et Firefox. Cela pourrait aller mieux avec JetPack. Si vous ne faites que des manipulations DOM de base, vous pouvez vous passer de jQuery. Vous devez traiter avec Firefox seulement de toute façon, donc les problèmes de navigateur ne sont pas votre préoccupation. –

+0

Lorsque j'ai besoin d'utiliser jQuery sur un site qui peut * déjà l'avoir, je vérifie d'abord son existence, avant de charger une version peut-être plus ancienne. Vous pouvez vérifier $ .jquery pour le numéro de version dans les versions récentes. Dans mon cas, j'écris aussi jQuery que je sais est compatible avec jQuery 1.0 si possible, dans le cas où le site utilise une très ancienne version. – mkoistinen

+0

Assez probablement lié: http://stackoverflow.com/questions/491490/how-to-use-jquery-in-firefox-extension – MatrixFrog

Répondre

0

Vous devriez référencez $ variable comme ceci:

$("body",window.content) 

Aussi j'ai aussi utilisé jQuery dans mon extension firefox, il fonctionne de manière transparente sans problème du tout.

Questions connexes