it-swarm.com.de

Internet Explorer 11-Erkennung

Ich weiß, dass IE 11 eine andere Benutzeragentenzeichenfolge als alle anderen IE hat

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

Ich habe versucht, IE 11 mit der für diese Frage angegebenen Antwort zu ermitteln. '

Jquery kann IE 11 nicht erkennen

Das ist !!navigator.userAgent.match(/Trident\/7\./)

Aber ich erhalte den Fehler Object not found and needs to be re-evaluated.

Dann habe ich die Entwicklerkonsole in IE11 geöffnet und versucht, auf einige vordefinierte Javascript-Objekte zuzugreifen. Es wird immer noch derselbe Fehler angezeigt.

Ich habe versucht

navigator.userAgent

window.navigator

console.log('test');

Hat jemand eine Ahnung davon?

81
Miqdad Ali

Bearbeiten 18. November 2016

Dieser Code funktioniert auch ( für diejenigen, die eine andere Lösung bevorzugen, ohne ActiveX zu verwenden.)

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

Ursprüngliche Antwort

Um Ie11 zu überprüfen, können Sie dies verwenden: (getestet)

(oder laufen this )

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

Ich habe alle VMS von IE:

enter image description here

enter image description here

enter image description here

enter image description here

Hinweis: Dies funktioniert nicht für IE11:

wie Sie hier sehen können, gibt es true zurück:

enter image description here

Also was können wir tun :

Anscheinend haben sie den Maschinen-Bitraum hinzugefügt:

ie11:

"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"

ie12:

"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"

so können wir machen:

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

dies wird nur für ie11 true zurückgeben.

149
Royi Namir

So erkennen Sie MSIE (von Version 6 bis 11) schnell:

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

Alle obigen Antworten ignorieren die Tatsache, dass Sie kein Fenster oder Navigator haben :-)

Dann habe ich die Entwicklerkonsole in IE11 geöffnet

und dort heißt es

Objekt nicht gefunden und muss neu bewertet werden.

und Navigator, Fenster, Konsole, keiner von ihnen existiert und muss neu bewertet werden. Ich habe das in Nachahmung gehabt. Schließen und öffnen Sie die Konsole einige Male.

19
commonpike

Ich verwende die folgende Funktion, um Version 9, 10 und 11 des IE zu erkennen:

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
}  
17
KennyE

Und wie ich das umgesetzt habe 

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

Dieser Link war hilfreich . Es enthält den Javascript-Code, um alle Versionen von IE bis IE11 zu erkennen. Ich habe das Skript mit dem IE11-Emulator getestet. Um den IE11-Emulator zu finden, klicken Sie mit der rechten Maustaste im Webbrowser auf "Element prüfen". Blättern Sie unten links auf der Seite in der Navigationsleiste nach unten und klicken Sie auf das Desktopsymbol. Die Dropdown-Box "User Agent String" enthält Optionen zum Emulieren von IE6-11. 

Es klappt. Ich habe es nur einige Minuten benutzt, bevor ich diese Antwort geschrieben habe. Es können keine Snapshots gepostet werden - nicht genügend Reputation. 


Dies ist der Code - folgen Sie dem Link, um ihn erneut anzuzeigen:

// 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>

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

Standardmäßig blockiert IE11 die Verwendung von ActiveX. Dieser Code funktioniert also erst, wenn der Benutzer dem Ausführen des Skripts zugestimmt hat.

1
Michal

Okay, versuchen Sie es einfach und für IE11 und IE unter Version 11

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

navigator.userAgent.toUpperCase().indexOf("TRIDENT/") != -1 für IE 11 Version navigator.userAgent.toUpperCase().indexOf("MSIE") != -1 für IE unter 11 Version

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

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

Navigator verwenden: -

Das navigator ist ein Objekt, das alle Informationen über den Browser des Clientcomputers enthält.

navigator.appName Gibt den Namen des Browsers des Clientcomputers zurück.

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>
0
Parth Raval

Eine ziemlich übersichtliche Methode, um nur IE 11 zu erkennen lautet:

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

oder

 var IE11= !!window.msCrypto;

msCrypto ist eine vorangestellte Version des window.crypto-Objekts und nur in IE 11 implementiert.

https://developer.mozilla.org/en-US/docs/Web/API/Window/crypto

0
j.j.

Ich fand, dass IE11 mehr als einen Benutzeragenten-String in verschiedenen Umgebungen anbietet.

Anstatt sich auf MSIE und andere Ansätze zu verlassen, ist es besser, sich auf Trident version zu verlassen

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

Hoffe das hilft :)

0
Mr.7

Die Verwendung dieses RegExp scheint für IE 10 und IE 11 zu funktionieren:

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

Ich habe keinen älteren IE als IE 10, um dies zu testen.

0
antoineMoPa