javascript - 包装 jQuery 函数

标签 javascript jquery firefox-addon

我正在开发一个 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/

相关文章:

javascript - 放置一个圆,使其不会与任何其他圆发生碰撞

javascript - 在 div 上覆盖 Canvas

Javascript - 显示本地存储的大图像

jQuery slideToggle 动画移动其他元素

javascript - Smoothscroll 在 chrome 中不起作用,但在其他浏览器中起作用

javascript - JavaScript 在操作浏览器和 DOM 方面是否有任何明显的限制?

javascript - Firebase 未定义?

jquery - 使用socket.io 和 angularjs

javascript - Firefox Extension : self. port.on 没有将结果传递给外部函数

javascript - 如何发现字体类型?