खोज…


परिचय

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

टिप्पणियों

जब संभव हो तो फीचर डिटेक्शन का उपयोग करें।

ब्राउज़र डिटेक्शन का उपयोग करने के कुछ कारण हैं (उदाहरण के लिए ब्राउज़र प्लगइन स्थापित करने या उनके कैश को साफ़ करने के तरीके पर उपयोगकर्ता के निर्देश देना), लेकिन आम तौर पर फीचर डिटेक्शन को सबसे अच्छा अभ्यास माना जाता है। यदि आप ब्राउज़र डिटेक्शन का उपयोग कर रहे हैं, तो सुनिश्चित करें कि यह बिल्कुल नेस्सेरी है।

Modernizr एक लोकप्रिय, हल्का जावास्क्रिप्ट लाइब्रेरी है जो फीचर डिटेक्शन को आसान बनाता है।

फ़ीचर डिटेक्शन मेथड

यह विधि ब्राउज़र विशिष्ट चीजों के अस्तित्व की तलाश करती है। इसे बिगाड़ना अधिक कठिन होगा, लेकिन भविष्य के प्रमाण होने की गारंटी नहीं है।

// Opera 8.0+
var isOpera = (!!window.opr && !!opr.addons) || !!window.opera || navigator.userAgent.indexOf(' OPR/') >= 0;

// Firefox 1.0+
var isFirefox = typeof InstallTrigger !== 'undefined';
    
// At least Safari 3+: "[object HTMLElementConstructor]"
var isSafari = Object.prototype.toString.call(window.HTMLElement).indexOf('Constructor') > 0;

// Internet Explorer 6-11
var isIE = /*@cc_on!@*/false || !!document.documentMode;

// Edge 20+
var isEdge = !isIE && !!window.StyleMedia;

// Chrome 1+
var isChrome = !!window.chrome && !!window.chrome.webstore;

// Blink engine detection
var isBlink = (isChrome || isOpera) && !!window.CSS;

इसमें सफलतापूर्वक परीक्षण किया गया:

  • फ़ायरफ़ॉक्स 0.8 - 44
  • क्रोम 1.0 - 48
  • ओपेरा 8.0 - 34
  • सफारी 3.0 - 9.0.3
  • IE 6 - 11
  • बढ़त- 20-25

रॉब डब्ल्यू को श्रेय

पुस्तकालय विधि

कुछ के लिए एक आसान तरीका एक मौजूदा जावास्क्रिप्ट लाइब्रेरी का उपयोग करना होगा। ऐसा इसलिए है क्योंकि यह सुनिश्चित करने के लिए मुश्किल हो सकता है कि ब्राउज़र का पता लगाना सही है, इसलिए यदि कोई उपलब्ध है तो यह काम करने वाले समाधान का उपयोग करने के लिए समझ में आता है।

एक लोकप्रिय ब्राउज़र-डिटेक्शन लाइब्रेरी है बोसेर

उपयोग उदाहरण:

if (bowser.msie && bowser.version >= 6) {
    alert('IE version 6 or newer');
}
else if (bowser.firefox) {
    alert('Firefox');
}    
else if (bowser.chrome) {
    alert('Chrome');
}
else if (bowser.safari) {
    alert('Safari');
}
else if (bowser.iphone || bowser.android) {
    alert('Iphone or Android');
}

उपयोगकर्ता एजेंट का पता लगाने

यह विधि उपयोगकर्ता एजेंट को प्राप्त करती है और ब्राउज़र को खोजने के लिए इसे पार्स करती है। ब्राउज़र नाम और संस्करण regex के माध्यम से उपयोगकर्ता एजेंट से निकाले जाते हैं। इन दोनों के आधार पर, <browser name> <version> लौटाया जाता है।

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

ध्यान दें कि इस विधि को आसानी से एक उपयोगकर्ता द्वारा खराब किया जा सकता है।

navigator.sayswho= (function(){
    var ua= navigator.userAgent, tem,
    M= ua.match(/(opera|chrome|safari|firefox|msie|trident(?=\/))\/?\s*(\d+)/i) || [];
    if(/trident/i.test(M[1])){
        tem=  /\brv[ :]+(\d+)/g.exec(ua) || [];
        return 'IE '+(tem[1] || '');
    }
    if(M[1]=== 'Chrome'){
        tem= ua.match(/\b(OPR|Edge)\/(\d+)/);
        if(tem!= null) return tem.slice(1).join(' ').replace('OPR', 'Opera');
    }
    M= M[2]? [M[1], M[2]]: [navigator.appName, navigator.appVersion, '-?'];
    if((tem= ua.match(/version\/(\d+)/i))!= null) M.splice(1, 1, tem[1]);
    return M.join(' ');
})();

केनेबेक को श्रेय



Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow