5

में ब्राउज़र का पता लगाने का सबसे अच्छा तरीका जावास्क्रिप्ट में ब्राउज़र का पता लगाने के कई तरीके हैं।जेएस

जहां तक ​​मुझे पता है, navigator.userAgent का उपयोग करके या सुविधाओं का पता लगाना (जैसे XMLHttpRequest) और इसी तरह।

क्या कोई मुझे बता सकता है कि कौन सा तरीका सबसे अच्छा और सबसे प्रभावी है?

+3

सुविधाओं का पता लगाने के लिए http://www.modernizr.com/ – Idered

उत्तर

16

तुम सच में जानते हैं कि वे क्या ब्राउज़र उपयोग कर रहे हैं की जरूरत है, तो आप ज्यादातर userAgent स्ट्रिंग को देखने के लिए (हालांकि आप कभी कभी अस्पष्ट सुविधाओं के एक जोड़े की तलाश द्वारा ब्राउज़र अनुमान लगा सकते हैं) है। बस जागरूक रहें कि कुछ ब्राउज़र उपयोगकर्ता को इसे बदलने और आपके साथ झूठ बोलने देते हैं। :-)

लेकिन अच्छे कारणों से ब्राउज़र का पता लगाना फैशन से बाहर है। इसके बजाए, जैसा कि आप कहते हैं, आप उन सुविधाओं का पता लगाना चाहते हैं जिन्हें आप ढूंढ रहे हैं। यह अधिक विश्वसनीय, और कम काम है। सिर्फ इसलिए कि आईई addEventListener का समर्थन नहीं करता है, उदाहरण के लिए, इसका मतलब यह नहीं है कि यह कभी नहीं होगा (और वास्तव में आईई 9 करता है)। तो आप इसके बजाए फीचर-डिटेक्ट करते हैं, जो कोड भविष्य में प्रमाणित करता है।

यहां एक ठोस उदाहरण है: मान लीजिए कि आप जानना चाहते हैं (जैसा कि मैंने अपने place5 jQuery plug-in के लिए किया था) क्या कोई ब्राउज़र placeholder attribute का समर्थन करता है। आप ब्राउज़र पहचान का उपयोग कर सकते हैं और उन ब्राउज़रों की एक सूची बनाए रख सकते हैं जिनमें किस संस्करण में संस्करण हैं या जिनके पास समर्थन नहीं है, जो गन्दा है और आपको वापस आने के लिए कुछ आदि रखना है, या आप यह कर सकते हैं:

if ("placeholder" in document.createElement("input")) { 
    // The browser supports the attribute 
} 
else { 
    // It doesn't 
} 

... और आप कर चुके हैं।

में kangax द्वारा बनाए गए फीचर परीक्षणों का एक बड़ा सेट है। Modernizr नामक एक लाइब्रेरी भी है जो आपके लिए फीचर डिटेक्शन, मीडिया क्वेरीज और बहुत कुछ करती है। यदि आप jQuery का उपयोग करते हैं, तो इसमें jQuery.support के माध्यम से निर्मित कुछ फीचर डिटेक्शन है। this article में फीचर डिटेक्शन, मीडिया प्रश्न, फॉर्म-फैक्टर डिटेक्शन (टैबलेट, फोन, या पीसी?) के विभिन्न पहलुओं की अच्छी चर्चा है।

+0

जस्ट जो मुझे चाहिए! IE9 और नीचे का पता लगाएं। – vsync

+0

@ टीजे। पाउडर - इसके बजाय फीचर डिटेक्शन का चयन करने के साथ सहमत है, लेकिन क्या होगा यदि आप एक बग को काम करने के लिए ब्राउज़र का पता लगाने की कोशिश कर रहे हैं? एक बग जिसे आप परीक्षण नहीं कर सकते हैं या यह ब्राउज़र को लटकाएगा? – johntrepreneur

+0

@ टीजे। पाउडर - मेरे पिछले प्रश्न से अलग, मुझे आईई 7 में ब्राउजर आईई 9 खोजने की ज़रूरत है और ऐसा करने का एक अच्छा कानूनी तरीका है (फीचर डिटेक्शन के बारे में आपकी टिप्पणियों के आधार पर) सशर्त टिप्पणियों का उपयोग करना होगा (आईई 9 तक समर्थित) जो एक चर सेट करता है। सही? – johntrepreneur

6

आप ब्राउज़र का पता नहीं लगाते हैं। इसके बजाय आप उपलब्ध सुविधाओं की जांच करें।

ब्राउज़र्स का पता लगाने के आसपास काम किया जा सकता है (नरक .. मुझे कुछ साल पहले जीमेल पर ओपेरा का उपयोग करते समय इसे स्वयं करना था), लेकिन यदि ब्राउज़र में कोई सुविधा है, तो आप जानते हैं कि आप इसका उपयोग कर सकते हैं।

+0

ऐसे मामले हैं जहां आपको विशिष्ट ब्राउज़र को जानना है, उदाहरण के लिए, आप ब्राउज़र विशिष्ट संदेश प्रदान कर सकते हैं। –

+0

और जादुई संदेश क्या कहा जाएगा? –

+0

ठीक है, मेरे मामले में, सफारी में वेबजीएल सक्षम करने के निर्देश। –

0

आप इस http://www.quirksmode.org/js/detect.html

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

सुविधा का पता लगाने के लिए एक और महान उपकरण Modernizr

0

फ़ीचर का पता लगाने ब्राउज़र का पता लगाने के लिए एक छोटी कटौती है। जैसा कि पहले से सूचीबद्ध है, मौसम को जानना ज़रूरी है कि ब्राउज़र को पहचानने के बजाए एक सुविधा आपके ब्राउज़र द्वारा समर्थित है या नहीं। नीचे दिए गए लिंक आप वस्तुओं उनके द्वारा समर्थित पर निर्भर करता है ब्राउज़रों के बीच अंतर करने में मदद मिलेगी: http://www.javascriptkit.com/javatutors/objdetect3.shtml

लेकिन यदि आप केवल केवल जानने पर खातिर ब्राउज़र का पता लगाने के लिए चाहते हैं, यह नहीं बल्कि विभिन्न जाँच से नेविगेटर उपयोग करना बेहतर है शर्तों की जांच करके विशेषताएं।