Envelopper la fonction jQuery
-
08-07-2019 - |
Question
Je développe un addon pour Firefox. Après l'avoir proposé à une publication publique sur le site des addons pour Firefox, le réviseur m'a demandé de placer toute ma fonction dans un nom d'espace ou de package.
Jusqu'à présent, j'ai bouclé toutes mes fonctions sauf "jQuery". fonction:
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 quelques autres appels Ajax de jQuery sont toujours déballés, y a-t-il un moyen de le faire?
La solution
Vous pouvez envelopper votre code complémentaire dans une fonction anonyme, recevoir et stocker sur cette étendue 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 vous trouvez dans un environnement très conflictuel Très , vous pouvez utiliser jQuery.noConflict (true)
(mode extrême), mais utilisez-le avec précaution, avec cette option, l'objet window.jQuery
être enregistré, et la plupart des plugins ne fonctionneront pas ...
Autres conseils
Si vous empaquetez jQuery avec votre code, vous pouvez également modifier le code de la bibliothèque pour le coller dans un endroit utile.
Pour le faire correctement , vous devez remplacer tous vos appels jQuery. * par myadoon.jQuery ...