我正在开发一个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 对象不会注册,大多数插件都无法正常工作......

其他提示

如果你要将jQuery与代码一起打包,你可能只需修改库代码就可以将它粘贴到有用的地方。

要做到正确,你需要用myadoon.jQuery替换你所有的jQuery。*调用......

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top