अगर jQuery प्लगइन लोड किया गया है तो मैं कैसे जांच सकता हूं?


221

क्या कोई विशेष प्लगइन उपलब्ध है या नहीं, यह जांचने का कोई तरीका है?

कल्पना कीजिए कि आप एक ऐसा प्लगइन विकसित कर रहे हैं जो दूसरे प्लगइन पर निर्भर है।

उदाहरण के लिए, मैं jQuery मान्यकरण प्लगइन चाहते हैं कि किसी दिए गए दिनांक मान्य है या नहीं यह जाँचने के लिए dateJS लाइब्रेरी का उपयोग करें। यदि jJ डेट उपलब्ध था, तो jQuery Valdation plugin में पता लगाने का सबसे अच्छा तरीका क्या होगा?



जवाबों:


364

सामान्यतया, jQuery प्लगइन्स jQuery गुंजाइश पर नाम स्थान हैं। आप यह देखने के लिए एक साधारण जाँच चला सकते हैं कि क्या नामस्थान मौजूद है:

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

dateJs हालांकि एक jQuery प्लगइन नहीं है। यह जावास्क्रिप्ट दिनांक ऑब्जेक्ट को संशोधित / विस्तारित करता है, और इसे jQuery नामस्थान के रूप में नहीं जोड़ा जाता है। आप जाँच सकते हैं कि क्या आपके लिए आवश्यक विधि मौजूद है, उदाहरण के लिए:

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

लेकिन आप उन समस्याओं में भाग सकते हैं जहाँ एपीआई देशी दिनांक एपीआई को ओवरलैप करता है।


63
अगर (
jQuery.fn.pluginName

6
हो सकता है कि थोड़ा ओवरकिल हो, लेकिन if ($.isFunction(jQuery.fn.pluginName)) { ... }यह भी सुनिश्चित करेगा कि यह कम से कम एक फ़ंक्शन है।
नॉयो सेप

मेरे पास एक फ़ंक्शन है जो स्क्रिप्ट को लोड करता है, `लोडस्क्रिप्ट (स्थान, नाम स्थान, कॉलबैक)`, कॉलबैक फ़ंक्शन को एक अंतराल के तहत चेतावनी दी जाती है, इसका मतलब है कि जब तक नाम स्थान window.jQueryसेट नहीं होता है कॉलबैक नहीं चलेगा, यह काम करता है लेकिन अब im tring करने के लिए aj क्वेरी प्लगइन लोड करें और यह जांचने के लिए, मुझे jquery को चुनिंदा फ़ंक्शन को कॉल करने की आवश्यकता है jQuery().pluginName, लेकिन जब मैं इसे अपने फ़ंक्शन पैरामीटर जैसे LoadScript("jquery+plugin.js",jquery().plugin)jquery () की खुराक अभी तक मौजूद नहीं हूं
हसन निसार खान

97

यदि हम एक उचित jQuery प्लगइन के बारे में बात कर रहे हैं (एक जो fn नाम स्थान का विस्तार करता है), तो प्लगइन का पता लगाने का उचित तरीका निम्न होगा:

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

या क्योंकि हर प्लगइन बहुत अधिक है कि कुछ मूल्य जो सच के बराबर है की गारंटी है, आप छोटे का उपयोग कर सकते हैं

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

BTW, $ और jQuery विनिमेय हैं, क्योंकि एक प्लगइन के आसपास विषम दिखने वाला आवरण प्रदर्शित होता है:

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

समापन

(function($) {
    //
})

पैरामीटर के रूप में उस बंद 'jQuery' को बंद करने के लिए एक कॉल के तुरंत बाद किया जाता है

(jQuery)

क्लोजर में $ jQuery के बराबर सेट है


2
मैं एक समारोह बनाfunction isPluginLoaded(plugin) { return !!$.fn[plugin] }
styfle

2
पहला उदाहरण होना चाहिएif(typeof $.fn.pluginname != 'undefined')
डोप्स

1
@dops सही है और मैंने तदनुसार उत्तर को संपादित किया है, हालांकि मैंने टाइप और मूल्य दोनों की तुलना करने के लिए समानता के बजाय एक डबल ट्रिपल का उपयोग किया है।
pwdst

1
$और हमेशा विनिमेय jQueryनहीं होते हैं , क्योंकि jQuery नो-संघर्ष मोड में लोड किया जा सकता है (जैसे वर्डप्रेस में) । इसने मुझे हमेशा शॉर्टहैंड, नो-संघर्ष-सुरक्षित दस्तावेज तैयार करने का उपयोग करने के लिए प्रेरित किया है : jQuery(function($) { // $ is safe in here.... });या, जैसा कि आप बताते हैं, क्लोजर पैटर्न:, (function($) { // $ is safe in here.... })(jQuery);मेरे मूड / आवश्यकता पर निर्भर करता है। (बीटीडब्लू, अपवोटेड, चेक के रूप में आप जो सलाह देते हैं वह वही है जिसे मैं पसंद करता हूं)
random_user_name

11

JQuery प्लगइन्स का पता लगाने के लिए मैंने कोष्ठक का उपयोग करने के लिए अधिक सटीक पाया:

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

8

प्लगइन्स के लिए जो fn नाम स्थान का उपयोग नहीं करता है (उदाहरण के लिए pnotify), यह काम करता है:

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

यह काम नहीं करता है:

if($.fn.pluginname)

धन्यवाद। एक और उदाहरण -
जेकरी


1

मैं दृढ़ता से अनुशंसा करूंगा कि आप अपने प्लगइन के साथ DateJS लाइब्रेरी को बंडल करें और इस तथ्य को दस्तावेज करें कि आपने इसे किया है। कुछ भी निर्भरता का शिकार होने से ज्यादा निराशाजनक नहीं है।

कहा कि, कानूनी कारणों से, आप हमेशा सब कुछ बंडल नहीं कर सकते। एरण गैल्परिन के उत्तर का उपयोग करके प्लगइन के अस्तित्व के लिए सतर्क और जाँच करने के लिए यह कभी भी दर्द नहीं करता है ।


1

अपनी पसंद के ब्राउज़र कंसोल में इसे चलाएं।

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

यदि प्लगइन मौजूद है तो यह आपके कंसोल में प्रतिक्रिया के रूप में "बोनजौर" प्रिंट करेगा।


-1

इस तरह का दृष्टिकोण काम करना चाहिए।

var plugin_exists = true;

try {
  // some code that requires that plugin here
} catch(err) {
  plugin_exists = false;
}

6
लगभग आप आसानी से पता लगा सकते हैं (और क्या करना चाहिए) को पकड़ने के लिए
नीचे उतरे
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.