문제

저는 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.noConflect 및 기타 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