इंटरनेट एक्सप्लोरर 11 का पता लगाना


125

मुझे पता है कि IE 11 में अन्य IE की तुलना में अलग-अलग उपयोगकर्ता एजेंट स्ट्रिंग है

 Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv 11.0) like Gecko

मैंने इस प्रश्न के लिए निर्दिष्ट उत्तर के साथ IE 11 का पता लगाने की कोशिश की है '

Jquery IE 11 का पता लगाने में विफल

thats !!navigator.userAgent.match(/Trident\/7\./)

लेकिन मुझे त्रुटि मिल रही है Object not found and needs to be re-evaluated.

फिर मैंने IE11 में डेवलपर कंसोल को खोला और कुछ पूर्वनिर्धारित जावास्क्रिप्ट वस्तुओं तक पहुंचने का प्रयास किया, मुझे अभी भी वही त्रुटि मिल रही है।

मैंने कोशिश की है

navigator.userAgent

window.navigator

console.log('test');

किसी को भी इसके बारे में कोई विचार है?


@ गोबखिन मैंने अपने मुद्दे के ऊपर उल्लेख किया है। त्रुटि प्राप्त करनाObject not found and needs to be re-evaluated.
मिक्कड अली


जवाबों:


188

18 नवंबर 2016 को संपादित करें

यह कोड भी काम करता है ( उन लोगों के लिए जो ActiveX का उपयोग किए बिना एक और समाधान पसंद करते हैं )

var isIE11 = !!window.MSInputMethodContext && !!document.documentMode;
  // true on IE11
  // false on Edge and other IEs/browsers.

मूल उत्तर

Ie11 की जांच करने के लिए, आप इसका उपयोग कर सकते हैं: (परीक्षण किया हुआ)

(या चलाने इस )

!(window.ActiveXObject) && "ActiveXObject" in window

मेरे पास IE का सभी VMS है:

यहाँ छवि विवरण दर्ज करें

यहाँ छवि विवरण दर्ज करें

यहाँ छवि विवरण दर्ज करें

यहाँ छवि विवरण दर्ज करें

सूचना: IE11 के लिए यह अभ्यस्त काम:

जैसा कि आप यहाँ देख सकते हैं, यह सच है:

यहाँ छवि विवरण दर्ज करें

तो हम क्या कर सकते हैं :

जाहिर है, उन्होंने मशीन को थोड़ा स्थान दिया:

यानी 11:

"Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; .NET4.0E; .NET4.0C; .NET CLR 3.5.30729; .NET CLR 2.0.50727; .NET CLR 3.0.30729; rv:11.0) like Gecko"

यानी 12:

"Mozilla/5.0 (Windows NT 6.3; Win64; x64; Trident/7.0; .NET4.0E; .NET4.0C; .NET CLR 3.5.30729; .NET CLR 2.0.50727; .NET CLR 3.0.30729; rv:11.0) like Gecko"

तो हम कर सकते हैं:

/x64|x32/ig.test(window.navigator.userAgent)

यह केवल यानी 11 के लिए सच लौटेगा।


1
@Jan। हाँ। केवल IE11 ही इस पूरी स्थिति के लिए सही होगा। मैंने अभी दिखाया कि <११ झूठे हैं।
रॉय नामी

1
@IanSteffy यह केवल ऑपरेशन का परिणाम (!) दिखाने के लिए है। आप एक HTML फ़ाइल खोल सकते हैं और स्क्रिप्ट टैग जोड़ सकते हैं और उस स्क्रिप्ट के अंदर कमांड चला सकते हैं। यहाँ यह चलाते हैं
रॉय नमिर

2
x64Chrome और Edge
Gene R

3
रुको, वहाँ एक IE12 है? मैंने सोचा था कि IE11 आखिरी था और हमें जल्द ही उस बेवकूफ ब्राउज़र के बारे में चिंता करने की ज़रूरत नहीं होगी! ☹
माइकल Scheper

1
विंडोज 7 एंटरप्राइज पर मेरे IE 11.0.9600.19431 के लिए काम नहीं करता है । नहीं है window.MSInputMethodContext
हेनरिक उलब्रिच

105

MSIE का पता लगाने के लिए (संस्करण 6 से 11 तक) जल्दी:

if(navigator.userAgent.indexOf('MSIE')!==-1
|| navigator.appVersion.indexOf('Trident/') > -1){
   /* Microsoft Internet Explorer detected in. */
}

2
दूसरा नहीं करना चाहिए indexOf()हो > -1?
सुधार किया

हाँ, मैं पता नहीं क्यों यह है> 0 और नहीं> -1, लेकिन "ट्राइडेंट /" शो बहुत आगे appVersion स्ट्रिंग में anyways-
chrismarx

22

मैं IE के संस्करण 9, 10 और 11 का पता लगाने के लिए निम्नलिखित फ़ंक्शन का उपयोग करता हूं:

function ieVersion() {
    var ua = window.navigator.userAgent;
    if (ua.indexOf("Trident/7.0") > -1)
        return 11;
    else if (ua.indexOf("Trident/6.0") > -1)
        return 10;
    else if (ua.indexOf("Trident/5.0") > -1)
        return 9;
    else
        return 0;  // not IE9, 10 or 11
}  

21

उपरोक्त सभी उत्तर इस तथ्य को नजरअंदाज करते हैं कि आप उल्लेख करते हैं कि आपके पास कोई खिड़की या नेविगेटर नहीं है :-)

तब मैंने IE11 में डेवलपर कंसोल को खोला

और कहते हैं कि यह कहाँ है

वस्तु नहीं मिली और उसका पुनर्मूल्यांकन किए जाने की आवश्यकता है।

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


5
अच्छाई आपको वास्तव में सवाल पढ़ने और पुनर्मूल्यांकन के साथ समस्या का जवाब देने के लिए धन्यवाद देता है।
निशानदाल

8
मेरे लिए भी काम किया। यही कारण है कि जब IE मर जाता है तो दुनिया भर में पार्टी होगी।
वॉल्ट्रेवो

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

7

आईई 11 का पता लगाने के लिए एक बहुत ही सुरक्षित और संक्षिप्त तरीका है

if(window.msCrypto) { /* I'm IE11 for sure */ }

या इस तरह का कुछ
var IE11= !!window.msCrypto;


msCryptowindow.cryptoऑब्जेक्ट का एक उपसर्ग संस्करण है और केवल IE 11 में लागू किया गया है।
https://developer.mozilla.org/en-US/docs/Web/API/Window/crypto


एकमात्र कार्यशील समाधान (यह सबसे छोटा, सबसे साफ और सबसे सुंदर है)! रॉय नमिर का /x64|x32/ig.test(window.navigator.userAgent)फ़ायरफ़ॉक्स पर भी लागू होता है!
सांडोर ज़ुबोली

4

और मैंने इसे कैसे लागू किया

<script type="text/javascript">
  !(window.ActiveXObject) && "ActiveXObject"
  function isIE11(){
    return !!navigator.userAgent.match(/Trident.*rv[ :]*11\./);
  }
</script>

1
मुझे लगता है कि आपके पास अपने फ़ंक्शन में एक टाइपो है। सबसे पहले, आप कंडीशन चेक करते हैं, जिसका उपयोग नहीं किया जाता है। दूसरा, शायद आपका मतलब है && "ActiveXObject" in window। तीसरा: दोहरे नकार के साथ क्या चाल है !!?
dma_k

1
!! बहुत ज्यादा का मतलब है 'कोअर्स टू बूलियन'।
एंड्रयू ग्रे

4

ठीक है यह कोशिश करो, सरल और IE11 और IE के नीचे 11 संस्करण के लिए

browserIsIE = navigator.userAgent.toUpperCase().indexOf("TRIDENT/") != -1 || navigator.userAgent.toUpperCase().indexOf("MSIE") != -1;

navigator.userAgent.toUpperCase().indexOf("TRIDENT/") != -1IE के लिए 11 संस्करण navigator.userAgent.toUpperCase().indexOf("MSIE") != -1नीचे IE के लिए 11 संस्करण

browserIsIE = navigator.userAgent.toUpperCase().indexOf("TRIDENT/") != -1 || navigator.userAgent.toUpperCase().indexOf("MSIE") != -1;

console.log('Is IE Browser : '+ browserIsIE)


2

यह कड़ी सहायक थी । इसमें IE से IE11 तक के सभी संस्करणों का पता लगाने के लिए जावास्क्रिप्ट कोड है। मैंने IE11 एमुलेटर के साथ स्क्रिप्ट का परीक्षण किया। IE11 एमुलेटर को खोजने के लिए, वेब ब्राउज़र पर राइट-क्लिक करें "इंस्पेक्ट एलिमेंट" पर क्लिक करें। पृष्ठ के निचले-बाएँ, नेविगेशन बार को नीचे स्क्रॉल करें और डेस्कटॉप आइकन पर क्लिक करें। "उपयोगकर्ता एजेंट स्ट्रिंग" ड्रॉपडाउन बॉक्स में IE6-11 का अनुकरण करने के लिए विकल्प हैं।

यह काम करता हैं। मैंने इस उत्तर को लिखने से कुछ मिनट पहले इसका इस्तेमाल किया था। स्नैपशॉट पोस्ट नहीं कर सकते - पर्याप्त प्रतिष्ठा नहीं।


यह कोड है - इसे फिर से देखने के लिए लिंक का पालन करें:

// Get IE or Edge browser version
var version = detectIE();

if (version === false) {
  document.getElementById('result').innerHTML = '<s>IE/Edge</s>';
} else if (version >= 12) {
  document.getElementById('result').innerHTML = 'Edge ' + version;
} else {
  document.getElementById('result').innerHTML = 'IE ' + version;
}

// add details to debug result
document.getElementById('details').innerHTML = window.navigator.userAgent;

/**
 * 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;
}
@import url(https://fonts.googleapis.com/css?family=Fira+Mono|Fira+Sans:300);
body {
  color: black;
  background-color: white;
  font-family: "Fira Sans", sans-serif;
  font-weight: 300;
  margin: 0;
  padding: 3rem;
}

h1 {
  color: darkgrey;
  text-align: center;
  font-weight: 300;
  font-size: 1.5rem;
  line-height: 2rem;
}

h2 {
  text-align: center;
  font-weight: 300;
  font-size: 4rem;
}

p {
  color: darkgrey;
  text-align: center;
  font-family: "Fira Mono", monospace;
  font-size: 1rem;
  line-height: 1.5rem;
}
<h1>Detect IE/Edge version with JavaScript.<br> Updated to recognize Internet Explorer 12+ aka Edge.</h1>
<h2 id="result">detecting…</h2>
<p id="details">n/a</p>


1

इस RegExp का उपयोग IE 10 और IE 11 के लिए काम करता है:

function isIE(){
    return /Trident\/|MSIE/.test(window.navigator.userAgent);
}

मेरे पास यह परीक्षण करने के लिए IE 10 से पुराना IE नहीं है।


0

नेविगेटर का उपयोग करें: -

वह navigatorऑब्जेक्ट है जिसमें क्लाइंट मशीन के ब्राउज़र के बारे में सभी जानकारी होती है।

navigator.appName क्लाइंट मशीन के ब्राउज़र का नाम देता है।

navigator.appName === 'Microsoft Internet Explorer' ||  !!(navigator.userAgent.match(/Trident/) || navigator.userAgent.match(/rv:11/)) || (typeof $.browser !== "undefined" && $.browser.msie === 1) ? alert("Please dont use IE.") : alert("This is not IE")
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>


1
appName IE 11 पर नेटस्केप है। उन्होंने डेवलपर्स को धोखा देने के लिए वे सब कुछ किया जो वे कर सकते थे।
क्ग्रॉनिक

0

मैंने पाया कि IE11 विभिन्न वातावरणों में एक से अधिक उपयोगकर्ता एजेंट स्ट्रिंग्स दे रहा है।

इसके बजाय MSIE, और अन्य तरीकों पर भरोसा करने के बजाय , Tridentसंस्करण पर भरोसा करना बेहतर है

const isIE11 = userAgent => userAgent.match(/Trident\/([\d.]+)/) ? +userAgent.match(/Trident\/([\d.]+)/)[1] >= 7;

उम्मीद है की यह मदद करेगा :)

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