2009-09-17 5 views
0

Je suis en train de développer un addon Firefox, après avoir nommé l'addon pour la version publique dans le site Firefox addons, le critique m'a demandé d'emballer toutes mes fonctions dans un espace de noms ou un nom de paquet.Wrap jQuery fonction

Jusqu'à présent, j'ai enveloppées toutes mes fonctions, sauf la fonction « jQuery »:

myaddonname = { 
    initialize: function() { 
     var prefManager = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch); 

     if (document.getElementById("contentAreaContextMenu") != null) { 
      document.getElementById("contentAreaContextMenu").addEventListener("popupshowing", this.onContextMenuPopup(), false); 
     } 

     jQuery.noConflict(); 
    }, 

     . 
     . 
     . 
     . 
} 

jQuery.noConflict et d'autres appels de jQuery Ajax sont encore déballés, une façon de le faire?

Répondre

2

Vous pouvez envelopper votre code complémentaire à l'intérieur d'une fonction anonyme, la réception et le stockage sur cette portée, l'objet jQuery:

(function ($) { 
    // $ is available inside this scope 

    window.myaddonname = { // global add-on namespace 
    initialize: function() { 
     //... 
    } 
    //... 
    }; 
})(jQuery.noConflict()); // execute and pass a reference to jQuery 

Et si vous êtes sur un très environnement très conflictuel, vous pouvez utiliser jQuery.noConflict(true) (mode extrême), mais l'utiliser avec soin, avec cette option l'objet window.jQuery gagné ne pas être enregistré, un La plupart des plugins ne fonctionneront pas ...

+0

l'environnement est inconnu parce que chaque utilisateur qui téléchargera mon addon aura différents autres addons qui pourraient entrer en conflit avec le mien. alors est-ce que ça vaut le coup ou pas de l'utiliser (j'utilise juste les fonctions Ajax de base pas d'autres plugins)? et encore une chose qu'en est-il de "window.myaddonname" est-il préférable d'écrire une fenêtre avant? parce que l'espace de noms par défaut de firefox est "chrom" ou quelque chose comme ça. –

+0

@Khaled Si 'window' n'existe pas, alors pourquoi ne pas l'affecter à un objet global (que vous pouvez référencer via' this' depuis votre fonction anonyme). – kangax

0

Si vous empaquetez jQuery avec votre code, vous pourriez aussi bien modifier le code de la bibliothèque pour le coller quelque part utile.

Pour ce faire droit, vous devrez remplacer tous vos jQuery. * Les appels avec myadoon.jQuery ...

+0

non J'utilise jQuery en tant que fichier autonome pour une mise à jour facile. –