특정 플러그인이 사용 가능한지 확인할 수있는 방법이 있습니까?
로드중인 다른 플러그인에 따라 플러그인을 개발한다고 가정하십시오.
예를 들어 jQuery Validation 플러그인이 dateJS 라이브러리를 사용하여 주어진 날짜가 유효한지 확인하고 싶습니다. dateJS가 사용 가능한 경우 jQuery Valdation 플러그인에서 감지하는 가장 좋은 방법은 무엇입니까?
특정 플러그인이 사용 가능한지 확인할 수있는 방법이 있습니까?
로드중인 다른 플러그인에 따라 플러그인을 개발한다고 가정하십시오.
예를 들어 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와 겹치는 문제가 발생할 수 있습니다.
if ($.isFunction(jQuery.fn.pluginName)) { ... }
수도 있지만 최소한 기능 일 수도 있습니다.
window.jQuery
가 설정되지 않을 때까지, 즉 콜백이 실행되지 않습니다. aj 쿼리 플러그인을로드하고 확인하기 위해, 나는 jquery select 함수를 호출해야 jQuery().pluginName
하지만 LoadScript("jquery+plugin.js",jquery().plugin)
jquery () 와 같은 내 함수 매개 변수 가 존재하지 않습니다.
올바른 jQuery 플러그인 (fn 네임 스페이스를 확장하는 플러그인)에 대해 이야기하는 경우 플러그인을 감지하는 올바른 방법은 다음과 같습니다.
if(typeof $.fn.pluginname !== 'undefined') { ... }
또는 모든 플러그인은 true와 같은 값을 갖도록 보장되므로 더 짧은 값을 사용할 수 있습니다
if ($.fn.pluginname) { ... }
플러그인 주변의 이상한 래퍼가 보여주는 것처럼 BTW, $와 jQuery는 상호 교환 가능합니다.
(function($) {
//
})(jQuery))
폐쇄
(function($) {
//
})
매개 변수로 'passing'jQuery를 호출하면 즉시
(jQuery)
클로저의 $는 jQuery와 동일하게 설정됩니다.
function isPluginLoaded(plugin) { return !!$.fn[plugin] }
if(typeof $.fn.pluginname != 'undefined')
$
그리고 jQuery
하지 항상 jQuery를 (예 : 워드 프레스와 같이) 할 수있는, 상호 교환에로드 노 갈등 모드 . 이 날 발생했습니다 항상 속기를 사용, 노 갈등 안전한 문서 준비 : jQuery(function($) { // $ is safe in here.... });
당신이 지적으로, 또는 폐쇄 패턴 : (function($) { // $ is safe in here.... })(jQuery);
내 기분 / 필요에 따라. (BTW, 추천 한 수표는 내가 선호하는 검사
jQuery에는 무언가가 함수인지 확인하는 메소드가 있습니다.
if ($.isFunction($.fn.dateJS)) {
//your code using the plugin
}
플러그인과 함께 DateJS 라이브러리를 번들로 제공하고 그 사실을 문서화하는 것이 좋습니다. 종속성을 찾아내는 것보다 더 실망스러운 것은 없습니다.
즉, 법적인 이유로 항상 모든 것을 묶을 수는 없습니다. 또한 Eran Galperin의 답변을 사용하여 플러그인의 존재를주의 깊게 확인하고 아프지 않습니다 .