jQuery関数をラップする
-
08-07-2019 - |
質問
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に置き換える必要があります...
所属していません StackOverflow