我正在开发一个Firefox插件,在Firefox插件站点公开发布该插件后,审阅者要求我将所有函数都封装在一个名称空间或包名称中。
到目前为止,我已经包装了除"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和其他一些jQuery的Ajax调用仍然是未包装的,有什么办法做到这一点吗?
发布于 2009-09-17 05:43:43
您可以将附加组件代码包装在一个匿名函数中,在该作用域上接收和存储jQuery对象:
(function ($) {
// $ is available inside this scope
window.myaddonname = { // global add-on namespace
initialize: function() {
//...
}
//...
};
})(jQuery.noConflict()); // execute and pass a reference to jQuery如果你在一个冲突非常严重的环境中,你可以使用jQuery.noConflict(true) (extreme模式),但要小心使用,如果使用该选项,window.jQuery对象将不会被注册,并且大多数插件将无法工作……
发布于 2009-09-17 05:30:05
如果您将jQuery与您的代码一起打包,那么您可能只需修改库代码以将其粘贴到有用的地方。
要做到这一点,您需要将所有的jQuery.*调用替换为myadoon.jQuery...
https://stackoverflow.com/questions/1436815
复制相似问题