Ich weiß, dass IE 11 eine andere Benutzeragentenzeichenfolge hat als alle anderen IE
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 erkennen. '
Das ist !!navigator.userAgent.match(/Trident\/7\./)
Aber ich bekomme 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. Ich erhalte immer noch den gleichen Fehler.
Ich habe versucht
navigator.userAgent
window.navigator
console.log('test');
Hat jemand eine Idee davon?
javascript
internet-explorer
internet-explorer-11
Miqdad Ali
quelle
quelle
Object not found and needs to be re-evaluated.
Antworten:
Bearbeiten 18 Nov 2016
Dieser Code funktioniert auch ( für diejenigen, die eine andere Lösung bevorzugen, ohne ActiveX zu verwenden )
Ursprüngliche Antwort
Um Ie11 zu überprüfen, können Sie Folgendes verwenden: (getestet)
(oder führen Sie dies aus )
!(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 Maschinenbitraum hinzugefügt:
ie11:
ie12:
so können wir tun:
Dies wird nur für ie11 true zurückgeben.
quelle
x64
gibt sowohl Chrome als auch Edge zurückwindow.MSInputMethodContext
.So erkennen Sie MSIE (von Version 6 bis 11) schnell:
quelle
indexOf()
sein> -1
?Ich benutze die folgende Funktion, um Version 9, 10 und 11 von IE zu erkennen:
quelle
Alle obigen Antworten ignorieren die Tatsache, dass Sie erwähnen, dass Sie kein Fenster oder keinen Navigator haben :-)
und dort steht es
und Navigator, Fenster, Konsole, keiner von ihnen existiert und muss neu bewertet werden. Ich habe das in Emulation gehabt. Schließen und öffnen Sie die Konsole einige Male.
quelle
Eine ziemlich sichere und präzise Möglichkeit, nur IE 11 zu erkennen, ist
if(window.msCrypto) { /* I'm IE11 for sure */ }
oder sowas
var IE11= !!window.msCrypto;
msCrypto
ist eine vorangestellte Version deswindow.crypto
Objekts und nur in IE 11 implementiert.https://developer.mozilla.org/en-US/docs/Web/API/Window/crypto
quelle
/x64|x32/ig.test(window.navigator.userAgent)
gilt auch für Firefox!Und wie ich das umgesetzt habe
quelle
&& "ActiveXObject" in window
. Drittens: Was ist der Trick mit doppelter Negation!!
?Okay, versuchen Sie dies einfach und für IE11 und IE unter 11 Version
navigator.userAgent.toUpperCase().indexOf("TRIDENT/") != -1
für IE 11 Versionnavigator.userAgent.toUpperCase().indexOf("MSIE") != -1
für IE unter 11 Versionquelle
Dieser Link war hilfreich . Es enthält den Javascript-Code zum Erkennen aller Versionen von IE bis IE11. Ich habe das Skript mit dem IE11-Emulator getestet. Um den IE11-Emulator zu finden, klicken Sie mit der rechten Maustaste auf den Webbrowser und klicken Sie auf "Element überprüfen". Scrollen Sie unten links auf der Seite in der Navigationsleiste nach unten und klicken Sie auf das Desktopsymbol. Das Dropdown-Feld "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. Schnappschüsse können nicht gepostet werden - nicht genug Ruf.
Dies ist der Code - folgen Sie dem Link, um ihn erneut anzuzeigen:
quelle
Die Verwendung dieses RegExp scheint für IE 10 und IE 11 zu funktionieren:
Ich habe keinen IE älter als IE 10, um dies zu testen.
quelle
Navigator verwenden: -
Das
navigator
ist ein Objekt, das alle Informationen über den Browser des Client-Computers enthält.navigator.appName
Gibt den Namen des Browsers des Client-Computers zurück.quelle
Ich habe festgestellt, dass IE11 mehr als eine Benutzeragentenzeichenfolge in verschiedenen Umgebungen bereitstellt.
Anstatt sich auf
MSIE
andere Ansätze zu verlassen, ist es besser, sich auf dieTrident
Version zu verlassenHoffe das hilft :)
quelle