मैं जावास्क्रिप्ट का उपयोग करके इंटरनेट एक्सप्लोरर (आईई) और माइक्रोसॉफ्ट एज का पता कैसे लगा सकता हूं?


82

मैंने बहुत कुछ देखा है, और मैं समझता हूं कि इंटरनेट एक्सप्लोरर का पता लगाने के कई तरीके हैं।

मेरी समस्या यह है: मेरे पास मेरे HTML दस्तावेज़ पर एक क्षेत्र है, जिसे क्लिक करने पर एक जावास्क्रिप्ट फ़ंक्शन कॉल होता है जो किसी भी प्रकार के इंटरनेट एक्सप्लोरर के साथ असंगत है। मैं यह जानना चाहता हूं कि क्या IE का उपयोग किया जा रहा है, और यदि ऐसा है, तो चर को सही पर सेट करें।

समस्या यह है, मैं अपना कोड नोटपैड ++ से बाहर लिख रहा हूं, और जब मैं ब्राउज़र में HTML कोड चलाता हूं, तो IE काम का पता लगाने के लिए कोई भी तरीका नहीं है। मुझे लगता है कि समस्या यह है कि मैं इसे नोटपैड ++ से बाहर चला रहा हूं। मुझे IE का पता लगाने में सक्षम होने की आवश्यकता है, ताकि चर के आधार पर, मैं साइट के उस क्षेत्र को अक्षम कर सकूं। मैंने यह कोशिश की है:

var isIE10 = false;

if (navigator.userAgent.indexOf("MSIE 10") > -1) {
    // this is internet explorer 10
    isIE10 = true;
   window.alert(isIE10);
}

var isIE = (navigator.userAgent.indexOf("MSIE") != -1);

if(isIE){
    if(!isIE10){
    window.location = 'pages/core/ie.htm';
    }
}

लेकिन यह काम नहीं करता है। मैं नोटपैड ++ से IE का पता कैसे लगा सकता हूं? यही कारण है कि मैं HTML का परीक्षण कर रहा हूं, लेकिन मुझे एक ऐसी विधि की आवश्यकता है जो उसके साथ काम करे।

संपादित करें

मैंने देखा कि किसी ने इसे डुप्लिकेट के रूप में चिह्नित किया है, और यह समझ में आता है। मुझे लगता है कि मैं स्पष्ट नहीं था। मैं JQuery के उत्तर का उपयोग नहीं कर सकता, इसलिए यह कोई डुप्लिकेट नहीं है क्योंकि मैं एक वेनिला JS उत्तर के लिए पूछ रहा हूं।

# 2 संपादित करें

क्या माइक्रोसॉफ्ट एज ब्राउज़र का पता लगाने का एक तरीका भी है?


2
आपके लिए IE विशिष्ट कोड लिखने के बजाय IE और अन्य ब्राउज़र पर कोड काम करना आपके लिए बहुत आसान होगा।
इबू

1
यदि आप IE में काम करने के लिए अपने फ़ंक्शन को ठीक नहीं कर सकते हैं, तो फीचर डिटेक्शन को ब्राउज़र द्वारा कोड को लिखने के लिए एक बहुत, बहुत बेहतर तरीका माना जाता है। इसके अलावा, यह ब्राउज़रों के बदलने के साथ आगे की अनुकूलता में भी बेहतर है। उदाहरण के लिए, क्या आप पहले से ही जानते हैं कि आप एज, माइक्रोसॉफ्ट के नवीनतम ब्राउज़र के साथ क्या करना चाहते हैं।
jfriend00

1
jQuery के संभावित डुप्लिकेट : यदि उपयोगकर्ता IE का उपयोग कर रहा है लिंक की जाँच करें, तो कई समाधान हैं
num8er

यदि नीचे दिए गए उत्तरों में से एक ने आपके प्रश्न का उत्तर दिया, तो यह साइट जिस तरह से काम करती है, आप उत्तर को "स्वीकार" करेंगे, यहाँ और अधिक: किसी को मेरे प्रश्न का उत्तर देने पर मुझे क्या करना चाहिए ? लेकिन केवल अगर आपके प्रश्न का वास्तव में उत्तर दिया गया है। यदि नहीं, तो प्रश्न पर अधिक विवरण जोड़ने पर विचार करें।
14

मेरे उत्तर में बढ़त का पता लगाया और एक आसान लिंक भी है जहाँ आप नवीनतम संस्करण देख सकते हैं।
संशय

जवाबों:


31

मुझे पता नहीं क्यों, लेकिन मैं उपयोगकर्ता एज में "एज" नहीं देख रहा हूं जैसे हर कोई बात कर रहा है, इसलिए मुझे एक और मार्ग लेना पड़ा जो कुछ लोगों की मदद कर सकता है।

इसके बजाय navigator.userAgent को देखने के बजाय, मैंने यह देखने के लिए navigator.appName को देखा कि क्या यह IE <= 10 या IE11 और Edge है। IE11 और एज "नेटस्केप" के ऐपनाम का उपयोग करते हैं, जबकि हर दूसरे पुनरावृत्ति "Microsoft इंटरनेट एक्सप्लोरर" का उपयोग करता है।

जब हम यह निर्धारित करते हैं कि ब्राउज़र IE11 या एज है, तो मैंने navigator.appVersion की ओर देखा। मैंने देखा कि IE11 में स्ट्रिंग इसके अंदर बहुत सारी जानकारी के साथ लंबी थी। मैंने मनमाने ढंग से "त्रिशूल" शब्द निकाला, जो निश्चित रूप से एज के लिए नेविगेटर में नहीं है। इस शब्द के लिए परीक्षण ने मुझे दोनों में अंतर करने की अनुमति दी।

नीचे एक फ़ंक्शन है जो उपयोगकर्ता के इंटरनेट एक्सप्लोरर के संख्यात्मक मान को लौटाएगा। अगर Microsoft Edge पर यह 12 नंबर का रिटर्न देता है।

गुड लक और मुझे उम्मीद है इससे मदद मिलेगी!

function Check_Version(){
    var rv = -1; // Return value assumes failure.

    if (navigator.appName == 'Microsoft Internet Explorer'){

       var ua = navigator.userAgent,
           re  = new RegExp("MSIE ([0-9]{1,}[\\.0-9]{0,})");

       if (re.exec(ua) !== null){
         rv = parseFloat( RegExp.$1 );
       }
    }
    else if(navigator.appName == "Netscape"){                       
       /// in IE 11 the navigator.appVersion says 'trident'
       /// in Edge the navigator.appVersion does not say trident
       if(navigator.appVersion.indexOf('Trident') === -1) rv = 12;
       else rv = 11;
    }       

    return rv;          
}

7
यह 12 बढ़त और फ़ायरफ़ॉक्स दोनों में लौट रहा है।
एडनकॉरबिन ३०'१६

@edencorbin मैंने नीचे एक उत्तर पोस्ट किया है जो इस मुद्दे का ध्यान रखता है। stackoverflow.com/a/36688806/2304450
गैविनोप्रोनी

4
यह काम नहीं करता। क्रोम, ओपेरा, फ़ायरफ़ॉक्स, और (शायद) सफ़ारी navigator.appName == "Netscape"सही का मूल्यांकन करता है।
जैक गिफिन

2
DITTO। क्रोम, ओपेरा, फ़ायरफ़ॉक्स, सफारी
बीबीसिंगर

91

यहाँ नवीनतम सही तरीका है कि मैं कैसे IE और एज के लिए जाँच करने के लिए पता है:

if (/MSIE 10/i.test(navigator.userAgent)) {
   // This is internet explorer 10
   window.alert('isIE10');
}

if (/MSIE 9/i.test(navigator.userAgent) || /rv:11.0/i.test(navigator.userAgent)) {
    // This is internet explorer 9 or 11
    window.location = 'pages/core/ie.htm';
}

if (/Edge\/\d./i.test(navigator.userAgent)){
   // This is Microsoft Edge
   window.alert('Microsoft Edge');
}

ध्यान दें कि आपको अपने कोड में अतिरिक्त var isIE10 की आवश्यकता नहीं है क्योंकि यह अब बहुत विशिष्ट जांच करता है।

इस पृष्ठ को नवीनतम IE और एज उपयोगकर्ता एजेंट स्ट्रिंग्स के लिए भी देखें क्योंकि यह उत्तर कुछ बिंदु पर पुराना हो सकता है: https://msdn.microsoft.com/en-us/library/hh869301%28v=vs.85%29। aspx


2
FWIW, जब मैं navigator.userAgentअपने Win10 / एज VM में जांच करता हूं तो मुझे केवल इसका पहला भाग मिलता है, जिसमें "Edge"स्ट्रिंग शामिल नहीं है ।
डेव न्यूटन

1
एज का Wich संस्करण आप उपयोग कर रहे हैं और क्या आप इसे यहां पोस्ट कर सकते हैं?
स्किप्टिक

मैं VirtualBox 5.0.2 r 102096 का उपयोग कर रहा हूं और छवि का नाम Microsoft Edge.Win10.For.Mac.VirtualBox.zip है । इसे MS साइट से सोमवार 27 अगस्त 2015 को डाउनलोड किया गया। छवि डेस्कटॉप पृष्ठभूमि में 10240 , एज होम पेज बिल्ड का कहना है। कहते हैं, मैं "इस वीएम, 20150801 के सबसे हालिया निर्माण" पर हूं , जो सेटिंग्स में 20.10240.16384.0 के रूप में दिखाया गया है ।
डेव न्यूटन

धन्यवाद और navigator.userAgent स्ट्रिंग?
संशयपूर्ण

1
इसे पूर्ण स्ट्रिंग के बजाय "मोज़िला / 5.0 (विंडोज NT 10.0; Win64; x64)" के रूप में लौटाया जा रहा है। IIRC मुझे VM / छवि समस्या के संबंध में एक और SO प्रश्न मिला।
डेव न्यूटन

36
// detect IE8 and above, and Edge
if (document.documentMode || /Edge/.test(navigator.userAgent)) {
    ... do something
}

स्पष्टीकरण:

document.documentMode

एक IE केवल संपत्ति, पहले IE8 में उपलब्ध है।

/Edge/

स्ट्रिंग 'एज' की खोज करने के लिए एक नियमित अभिव्यक्ति - जिसे हम तब 'navigator.userAgent' संपत्ति के खिलाफ परीक्षण करते हैं

अद्यतन मार्च 2020

@ जैम टिप्पणी करता है कि एज का नवीनतम संस्करण अब Edgउपयोगकर्ता एजेंट के रूप में रिपोर्ट करता है। तो जाँच होगी:

if (document.documentMode || /Edge/.test(navigator.userAgent) || /Edg/.test(navigator.userAgent)) {
    ... do something
}

2
यह इस पृष्ठ का इकलौता है जो IE और एज दोनों पर मेरे लिए काम कर रहा है।
Meloman

1
/Edge\//.test(navigator.userAgent) अधिक मजबूत बनाने के लिए, मैं बैकस्लैश को शामिल करना पसंद करता हूं।
जे जे

1
एज के नवीनतम संस्करण में, यह उपयोगकर्ता एजेंट में सिर्फ एडग है। इसलिए IE, एज और एज क्रोमियम के लिए परीक्षण करें, और स्लैश सहित:document.documentMode || /Edge\//.test(navigator.userAgent) || /Edg\//.test(navigator.userAgent)
Jam

मुझे लगता है कि आपको एज "यूएजी" स्ट्रिंग के साथ एज का पता लगाने की आवश्यकता नहीं है, क्योंकि यह क्रोमियम-आधारित है और संभवत: इसका पता नहीं लगाया जाना चाहिए (जैसा कि एजएचटीएमएल के विपरीत)
एंड्री

15

मैं UAParser https://github.com/faisalman/ua-parser-js का उपयोग कर रहा हूं

var a = new UAParser();
var name = a.getResult().browser.name;
var version = a.getResult().browser.version;

2
सामान्य तौर पर, फीचर डिटेक्शन ब्राउजर डिटेक्शन से बेहतर होता है। यदि आपको वास्तव में एक ब्राउज़र का पता लगाने की आवश्यकता है, तो मैं एक पुस्तकालय का उपयोग करूंगा (जैसा कि यहां बताया गया है)। उपयोगकर्ता एजेंट स्ट्रिंग को पार्स करने के लिए बहुत सारी पेचीदगियां हैं, एक पुस्तकालय में गलती का खतरा कम होगा।
सैंडस्ट्रॉम

बहुत उपयोगी, अन्य समाधानों में से किसी ने भी काम नहीं किया, इस प्लगइन ने मेरे लिए पूरी तरह से काम किया।
एडनकॉर्बिन

11

विषय थोड़ा पुराना है, लेकिन चूँकि यहाँ की लिपियाँ फ़ायरफ़ॉक्स को एक झूठी सकारात्मक (EDGE v12) के रूप में पहचानती हैं, यहाँ संस्करण I है:

function isIEorEDGE(){
  if (navigator.appName == 'Microsoft Internet Explorer'){
    return true; // IE
  }
  else if(navigator.appName == "Netscape"){                       
     return navigator.userAgent.indexOf('.NET') > -1; // Only Edge uses .NET libraries
  }       

  return false;
}

कौन से पाठ्यक्रम को अधिक संक्षिप्त तरीके से लिखा जा सकता है:

function isIEorEDGE(){
  return navigator.appName == 'Microsoft Internet Explorer' || (navigator.appName == "Netscape" && navigator.userAgent.indexOf('.NET') > -1);
}

बढ़त के लिए झूठे
क्रीम व्हिप हवाई जहाज

@CreamWhippedAirplane क्या आप यहां अपने संस्करण के द्वारा दिए गए navigator.appName का परिणाम पोस्ट कर सकते हैं? हो सकता है कि उन्होंने इसे हाल ही में बदल दिया हो
गाविनो ग्रीफोनी

@CreamWhippedAirplane उन्हें लगता है कि वे बदल गए हैं navigator.appVersion: अब इसमें "ट्रिडेंट" नहीं है, लेकिन इसके बजाय वे नाम में "एज" को ठीक से जोड़ते हैं। मेरे उत्तर को अभी अपडेट कर रहा है!
गेविनोप्रोफनी

Browserstack.com पर परीक्षण करते समय यह मेरे लिए काम नहीं करता था, मुझे नहीं पता कि यह असली मशीन पर काम करता है या नहीं! लेकिन ब्राउज़रस्टैक पर मुझे Netscapeऐपनाम के रूप में मिला ...
बेट्टी सेंट

4
IE 11 के लिए विफल रहता है। IE 11 appname के रूप में केवल 'नेटस्केप' देता है, इस प्रकार स्थिति को विफल कर रहा है
अंकुर अग्रवाल

8

इस फंक्शन ने मेरे लिए पूरी तरह से काम किया। यह एज का भी पता लगाता है।

मूल रूप से इस कोडपेन से:

https://codepen.io/gapcode/pen/vEJNZN

/**
 * detect IE
 * returns version of IE or false, if browser is not Internet Explorer
 */
function detectIE() {
  var ua = window.navigator.userAgent;

  // Test values; Uncomment to check result …

  // IE 10
  // ua = 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)';

  // IE 11
  // ua = 'Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko';

  // Edge 12 (Spartan)
  // ua = 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36 Edge/12.0';

  // Edge 13
  // ua = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Safari/537.36 Edge/13.10586';

  var msie = ua.indexOf('MSIE ');
  if (msie > 0) {
    // IE 10 or older => return version number
    return parseInt(ua.substring(msie + 5, ua.indexOf('.', msie)), 10);
  }

  var trident = ua.indexOf('Trident/');
  if (trident > 0) {
    // IE 11 => return version number
    var rv = ua.indexOf('rv:');
    return parseInt(ua.substring(rv + 3, ua.indexOf('.', rv)), 10);
  }

  var edge = ua.indexOf('Edge/');
  if (edge > 0) {
    // Edge (IE 12+) => return version number
    return parseInt(ua.substring(edge + 5, ua.indexOf('.', edge)), 10);
  }

  // other browser
  return false;
}

फिर आप if (detectIE()) { /* do IE stuff */ }अपने कोड में उपयोग कर सकते हैं ।


इसने मेरे लिए 2019 में काम किया। इस पृष्ठ के अन्य समाधानों ने फ़ायरफ़ॉक्स के लिए गलत सकारात्मक या IE 11. के लिए भी गलत नकारात्मक दिया
मेलिसा फ्रीमैन

6

यदि आप केवल MS ब्राउज़र का उपयोग करने वाले उपयोगकर्ताओं को चेतावनी या कुछ देना चाहते हैं, तो यह कोड अच्छा होना चाहिए।

HTML:

<p id="IE">You are not using a microsoft browser</p>

जावास्क्रिप्ट:

using_ms_browser = navigator.appName == 'Microsoft Internet Explorer' || (navigator.appName == "Netscape" && navigator.appVersion.indexOf('Edge') > -1) || (navigator.appName == "Netscape" && navigator.appVersion.indexOf('Trident') > -1);

if (using_ms_browser == true){
    document.getElementById('IE').innerHTML = "You are using a MS browser"
}

@GavinoGrifoni को धन्यवाद



2

इस स्निप का उपयोग करें: var IE = (navigator.userAgent.indexOf("Edge") > -1 || navigator.userAgent.indexOf("Trident/7.0") > -1) ? true : false;


3
इसने मेरे लिए सबसे अच्छा काम किया, हालांकि टर्नरी ऑप निरर्थक है। navigator.userAgent.indexOf("Edge") > -1 || navigator.userAgent.indexOf("Trident/7.0") > -1सही या गलत का मूल्यांकन करता है ताकि आप उसे वापस कर सकें / उपयोग कर सकें।
कोल्बी

2

ब्राउज़र का पता लगाने के लिए एक लाइन कोड।

यदि ब्राउज़र IE या एज है, तो यह सही लौटेगा;

let isIE = /edge|msie\s|trident\//i.test(window.navigator.userAgent)

0

यहाँ एक जावास्क्रिप्ट क्लास है जो IE10, IE11 और Edge का पता लगाता है।
परीक्षण उद्देश्यों के लिए नेविगेटर ऑब्जेक्ट को इंजेक्ट किया जाता है।

var DeviceHelper = function (_navigator) {
    this.navigator = _navigator || navigator;
};
DeviceHelper.prototype.isIE = function() {
    if(!this.navigator.userAgent) {
        return false;
    }

    var IE10 = Boolean(this.navigator.userAgent.match(/(MSIE)/i)),
        IE11 = Boolean(this.navigator.userAgent.match(/(Trident)/i));
    return IE10 || IE11;
};

DeviceHelper.prototype.isEdge = function() {
    return !!this.navigator.userAgent && this.navigator.userAgent.indexOf("Edge") > -1;
};

DeviceHelper.prototype.isMicrosoftBrowser = function() {
    return this.isEdge() || this.isIE();
};

0

अगर हमें एज की जाँच करने की आवश्यकता है तो कृपया इस पर ध्यान दें

अगर (navigator.userAgent.indexOf ("एज")> 1) {

//do something

}


-4

सबसे पहले यह सुनिश्चित करने के लिए नोटपैड ++ समस्या नहीं है। यह आपकी " स्ट्रिंग मिलान समस्या " है

सभी IE संस्करण भर में सामान्य स्ट्रिंग MSIE है http://www.useragentstring.com/pages/Internet%20Explorer/ पर विभिन्न उपयोगकर्तासंबंधी स्ट्रिंग देखें।

if(navigator.userAgent.indexOf("MSIE") != -1){
   alert('I am Internet Explorer!!');
}

यह कोशिश की, यह काम नहीं करता है। मैं IE में नोटपैड ++ से कोड भागा, और कोई अलर्ट नहीं था। मैंने डीबगर कंसोल को चेक किया और कोई त्रुटि नहीं थी। मैं विंडोज 7 चला रहा हूं, यकीन नहीं होता कि IE के संस्करण को प्रभावित करता है

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