2010-05-02 4 views
16

मैं कुछ जावास्क्रिप्ट विकसित कर रहा हूं जो प्रोटोटाइप.जेएस या JQuery के साथ काम करना चाहिए, इस प्रकार मुझे प्राथमिक लाइब्रेरी का उपयोग करने की पहचान करने के लिए कुछ तरीका चाहिए। मैं उसे कैसे कर सकता हूँ?

+2

क्या होगा अगर वे दोनों लोड कर रहे हैं? –

उत्तर

19

आप इस तरह jQuery के लिए जाँच कर सकते हैं:

if (window.$ === window.jQuery) 
5

ठीक है, आप jQuery की उपस्थिति की जांच कर सकता है:

if(window.jQuery !== "undefined") 
{ 
    // jQuery Yay! 
} 

और फिर इसे $

if(window.jQuery === window.$) 
{ 
    // jQuery Yay! 
} 
को असाइन किया गया है, तो
+1

संभवतया आप पहले उदाहरण में 'टाइपोफ़' का अर्थ रखते हैं। – bobince

3

jQuery noconflict मदद कर सकता है? फिर आप प्रोटोटाइप के लिए jQuery और $ के लिए jQuery का उपयोग कर सकते हैं।

3

@SLaks और @Chacha102 jQuery का पता लगाने के लिए सही हैं, लेकिन आप यह सुनिश्चित करें कि यदि $ समारोह jQuery से नहीं है, आप कर सकते हैं PrototypeJS से आता है बनाना चाहते हैं तो:

​if (typeof $ == 'function'​​) { 
    if ($.fn && $.fn.jquery) { // $.fn.jquery contains the version number 
    // jquery 
    } else if (window.Prototype && Prototype.Version) { 
    // prototype 
    } 
}​ 
+0

सिर्फ इसलिए कि प्रोटोटाइप का मतलब यह नहीं है कि '$' ओवरराइट नहीं किया गया है। – SLaks

+0

स्लाक्स, हां, यह पहले ही ओवरराइट हो सकता है, यही कारण है कि मैं पहले jQuery की तलाश करता हूं, लेकिन अगर कुछ और किया तो आप वास्तव में नहीं जानते ... – CMS

1

यह लिखें किसी पर निर्भरता के बिना लाइब्रेरी और इसे jQuery और प्रोटोटाइप दोनों के साथ ठीक काम करना चाहिए;)

गंभीरता से, प्रत्येक ब्राउज़र के लिए कोड की प्रत्येक पंक्ति के तीन अलग-अलग बदलावों को लिखने से बचने के लिए इन पुस्तकालयों के मुख्य बिंदुओं में से एक नहीं है? एक से अधिक लाइब्रेरी के अनुरूप करने के लिए कोड लिखना काफी मूर्खतापूर्ण लगता है।

वैसे भी, लगभग 5 सेकंड के लिए या तो लाइब्रेरी के लिए प्रलेखन को देखते हुए आपको यह संकेत देना चाहिए कि jq $ के पास कौन सा गुण होगा जो $ pt होगा। इससे पता चलता है कि आपने ढांचे के बीच मतभेदों को देखने के लिए वास्तव में परेशान नहीं किया है (जो स्पष्ट रूप से उन्हें अलग करने का सबसे अच्छा तरीका है, है ना?)। क्या आप वाकई जानते हैं कि आप स्वयं को क्या प्राप्त कर रहे हैं?

के रूप में कई उल्लेख किया है:

var whosThatDollarSign = typeof window.$=='undefined' ? 'none' : (window.$==window.jQuery ? 'jQuery' : 'not jQuery') 
+0

अगर मैं यह सब शुरू नहीं कर पाता तो मैं इसे वोट दूंगा अंत में उपदेश। –

+0

चिंता न करें, मैं इस पर कोई नींद नहीं खो रहा हूं। –

1

मैं कुछ जावास्क्रिप्ट है कि या तो Prototype.js या JQuery साथ काम करना चाहिए विकासशील कर रहा हूँ, इस प्रकार मैं किसी तरह क्या उपयोग में प्राथमिक पुस्तकालय है की पहचान करने की जरूरत है। मैं उसे कैसे कर सकता हूँ?

आपका प्रश्न संदिग्ध है, मेरे लिए दो स्पष्ट अर्थ हैं इसलिए मैं दोनों का जवाब दूंगा।

यदि आपका मतलब है कि आप लिखना कोड चाहते हैं जो इस पर ध्यान दिए बिना कि jQuery या प्रोटोटाइप.जेएस का उपयोग किया गया है, तो जवाब यह है कि कोड लिखना काफी आसान है जो पुस्तकालयों के बावजूद काम करता है या होगा , लदा हुआ। तो यह जानने की कोई आवश्यकता नहीं है कि किस का उपयोग किया गया है।

यदि आपका मतलब है कि आप दो अलग-अलग स्क्रिप्ट लिखने जा रहे हैं, एक jQuery के लिए और एक प्रोटोटाइप.जेएस के लिए, तो, आप जिस पर "पहचान" करते हैं, उसके आधार पर, आप एक स्क्रिप्ट या दूसरे लोड करेंगे, फिर आप अपने कोड को बहुत खराब वास्तुकला पर आधारित करना। उन पुस्तकालयों में से कोई भी ब्राउज़र के विशेष रूप से विस्तृत चयन का समर्थन नहीं करता है और जब भी कोई नया संस्करण आता है, तब भी उन्हें अपडेट करने की आवश्यकता होती है, यहां तक ​​कि "लोकप्रिय" वे भी समर्थन करते हैं।

अलग-अलग स्क्रिप्ट का उपयोग करके दोनों का समर्थन करने का प्रयास करने पर एक चल रहे रखरखाव सिरदर्द बन जाएगा - दो बार। या शायद यह तुम्हारा इरादा है।

-

रोब

संबंधित मुद्दे

 संबंधित मुद्दे