jQuery 플러그인이로드되었는지 확인하려면 어떻게해야합니까?

StackOverflow https://stackoverflow.com/questions/400916

  •  03-07-2019
  •  | 
  •  

문제

특정 플러그인을 사용할 수 있는지 확인하는 방법이 있습니까?

로드중인 다른 플러그인에 의존하는 플러그인을 개발하고 있다고 상상해보십시오.

예를 들어 jQuery 유효성 검사 플러그인이 DateJS 라이브러리를 사용하여 주어진 날짜가 유효한지 확인하려고합니다. DateJS를 사용할 수있는 경우 jQuery Valdation 플러그인에서 가장 좋은 방법은 무엇입니까?

도움이 되었습니까?

해결책

일반적으로 jQuery 플러그인은 jQuery 범위의 네임 스페이스입니다. 네임 스페이스가 있는지 확인하기 위해 간단한 점검을 실행할 수 있습니다.

 if(jQuery().pluginName) {
     //run plugin dependent code
 }

그러나 DateJS는 jQuery 플러그인이 아닙니다. JavaScript 날짜 개체를 수정/확장하며 jQuery 네임 스페이스로 추가되지 않습니다. 예를 들어 필요한 방법이 존재하는지 확인할 수 있습니다.

 if(Date.today) {
      //Use the dateJS today() method
 }

그러나 API가 기본 날짜 API와 겹치는 문제가 발생할 수 있습니다.

다른 팁

적절한 jQuery 플러그인 (FN 네임 스페이스를 확장)에 대해 이야기하는 경우 플러그인을 감지하는 적절한 방법은 다음과 같습니다.

if(typeof $.fn.pluginname !== 'undefined') { ... }

또는 모든 플러그인은 True와 동일한 가치를 갖는 것이 거의 보장되므로 짧게 사용할 수 있습니다.

if ($.fn.pluginname) { ... }

플러그인 주변의 홀수 래퍼가 보여 주듯이 BTW, $ 및 jQuery는 상호 교환 가능합니다.

(function($) {
    //
})(jQuery))

폐쇄

(function($) {
    //
})

매개 변수로 jQuery가 '통과'jQuery에 대한 호출이 즉시 이어집니다.

(jQuery)

폐쇄의 $는 jQuery와 동일하게 설정됩니다.

jQuery 플러그인을 감지하기 위해 브래킷을 사용하는 것이 더 정확하다고 생각했습니다.

if(jQuery().pluginName) {
    //run plugin dependent code
}

FN 네임 스페이스 (예 : pnotify)를 사용하지 않는 플러그인의 경우 다음이 작동합니다.

if($.pluginname) {
    alert("plugin loaded");
} else {
    alert("plugin not loaded");
}

이것은 작동하지 않습니다 :

if($.fn.pluginname)

jQuery는 무언가 기능이 기능인지 확인하는 방법이 있습니다.

if ($.isFunction($.fn.dateJS)) {
    //your code using the plugin
}

API 참조 : https://api.jquery.com/jquery.isfunction/

DateJS 라이브러리를 플러그인과 함께 묶고 그 사실을 문서화하는 것이 좋습니다. 의존성을 사냥하는 것보다 더 실망스러운 것은 없습니다.

즉, 법적 이유로 항상 모든 것을 묶을 수는 없습니다. 또한 조심스럽게 아프지 않고 플러그인의 존재를 확인하는 것은 결코 아프지 않습니다. 에란 갈 페린의 대답.

선택한 브라우저 콘솔에서 실행하십시오.

if(jQuery().pluginName){console.log('bonjour');}

플러그인이 존재하면 콘솔의 응답으로 "Bonjour"를 인쇄합니다.

이런 종류의 접근 방식은 작동해야합니다.

var plugin_exists = true;

try {
  // some code that requires that plugin here
} catch(err) {
  plugin_exists = false;
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top