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?
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:
Hinweis: Dies funktioniert nicht für IE11:
wie Sie hier sehen können, gibt es true zurück:
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.
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. */
}
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.
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
}
Und wie ich das umgesetzt habe
<script type="text/javascript">
!(window.ActiveXObject) && "ActiveXObject"
function isIE11(){
return !!navigator.userAgent.match(/Trident.*rv[ :]*11\./);
}
</script>
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>
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.
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)
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>
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
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 :)
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.