[jquery] jQuery 플러그인이로드되었는지 어떻게 확인할 수 있습니까?

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

로드중인 다른 플러그인에 따라 플러그인을 개발한다고 가정하십시오.

예를 들어 jQuery Validation 플러그인이 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가 기본 Date API와 겹치는 문제가 발생할 수 있습니다.


답변

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

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

또는 모든 플러그인은 true와 같은 값을 갖도록 보장되므로 더 짧은 값을 사용할 수 있습니다

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

플러그인 주변의 이상한 래퍼가 보여주는 것처럼 BTW, $와 jQuery는 상호 교환 가능합니다.

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

폐쇄

(function($) {
    //
})

매개 변수로 ‘passing’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 라이브러리를 번들로 제공하고 그 사실을 문서화하는 것이 좋습니다. 종속성을 찾아내는 것보다 더 실망스러운 것은 없습니다.

즉, 법적인 이유로 항상 모든 것을 묶을 수는 없습니다. 또한 Eran Galperin의 답변을 사용하여 플러그인의 존재를주의 깊게 확인하고 아프지 않습니다 .


답변

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

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

플러그인이 존재하면 콘솔에 응답으로 “bonjour”를 출력합니다.