我正在开发一个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调用仍然无法解开,无论如何都可以这样做?
答案 0 :(得分:2)
您可以将附加代码包装在匿名函数中,在该作用域上接收和存储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)
(极端模式),但请谨慎使用window.jQuery
对象将不会注册,大多数插件将无法正常工作......
答案 1 :(得分:0)
如果你要将jQuery与代码一起打包,你可能只需修改库代码就可以将它粘贴到有用的地方。
要做到正确,你需要用myadoon.jQuery替换你所有的jQuery。*调用......