我正在开发一个 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 调用仍然未包装,有什么方法可以做到这一点吗?
最佳答案
您可以将附加代码包装在匿名函数中,在该范围内接收和存储 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
对象将不会被注册,并且大多数插件将无法工作...
关于javascript - 包装 jQuery 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1436815/