質問

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をコードと一緒にパッケージ化する場合は、ライブラリコードを変更して、便利な場所に貼り付けることもできます。

それを正しく行うには、すべてのjQuery。*呼び出しをmyadoon.jQueryに置き換える必要があります...

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top