Erkennen IE8 zuverlässig mit javascript
Ich geschrieben habe, eine web-app erfordert Internet Explorer version 8 (oder höher vermutlich). Wenn ich IE8 auf einem sauberen windows-Installation auf einer VM meldet es 'MSIE 8.0' als user-agent-bei Abfrage mit navigator.userAgent in javascript. Aber auf einen Kollegen windows 7 Maschine seine IE-Berichte der version 8 in der Help|About-Fenster angezeigt, aber die Benutzer-agent-string 'MSIE 7.0'.
Ich vermute, dass irgendwo auf seiner Maschine, es ist eine Einstellung, die sagt IE vorzutäuschen, um die Vorherige version, eine Art Kompatibilitäts-Einstellung ich nehme, aber für das Leben von mir ich kann es nicht finden. Ich bin nicht die Einrichtung quirksmode oder IE7 Kompatibilitätsmodus von meinem Ende.
- tun Sie wirklich brauchen, um zu überprüfen, für die browser-version? oder können Sie nur verwenden Sie die feature-Erkennung? weil ich [expletive] hasse browser-Erkennung.
- Ich bin ein f***ing fan von der Sternchen-form der Zensur. 🙂
- ja, gut [expletive] Sie! 😛
- Eigentlich ist es der bessere CSS-standards unterstützen, die sich durch die IE8, die ich Suche; ich weiß nicht, wie feature erkennen, dass speziell. Natürlich könnte ich das feature Erkennung für etwas, IE8 bestimmten sowieso. So oder so bleibt die Frage, warum ist der user-agent-reporting einer früheren version?
- oder vielmehr, was ist meine web-app tut, was der user-agent zu misreport, wenn es da Fehlmeldungen, das kann bedeuten, dass es in den Kompatibilitätsmodus, indem Sie die web-app, das ist genau das Verhalten, ich bin nicht auf der Suche nach
Du musst angemeldet sein, um einen Kommentar abzugeben.
<meta http-equiv="X-UA-Compatible" content="edge">
. Es stellt sich heraus, dass verhindert, dass IE 8 nie fallen zurück auf compatibility-Modus, der es sich herausstellt, war das problem. Die Standard-Einstellung für den IE ist die Kraft aller Intranetsites in Kompatibilitätsmodus.Der user-agent ist nicht eine sinnvolle oder zuverlässige Art und Weise der Ermittlung der browser-version.
Warum gehst du nicht schauen auf das Vorhandensein der Funktion, die Sie benötigen, indem es den IE8 nur und nutzen?
Das ist eine viel zuverlässigere Methode.
Den meisten unterhaltsame trick, den ich gesehen habe — ohne jegliche Vorstellung davon, wie effizient es ist — ist die Nutzung der IE conditional comment-Funktion dynamisch. Zu tun, dein code nimmt eine versteckte
<div>
oder eine<div>
in ein Dokument-fragment oder was auch immer, und fügt es in ein paar HTML-umgeben von einem bedingten Kommentar codiert, um zu überprüfen, für eine bestimmte browser-version:IE8 zeigen können, einen kleinen button neben der URL-box, wechselt der browser zwischen IE7-Modus und den IE8-Modus. Öffnen Sie die "Entwickler-Tools", und das werde Ihnen sagen, was die aktuelle Einstellung ist.
Konnte verwenden Sie bedingte Kommentare?
http://www.modernizr.com/
Sollte es erkennen solcher Probleme. Alternativ, ich bin mir nicht sicher, aber IE 8 wechseln können seine Benutzer-Agent-tag in 'Compatibility Mode'.
User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/533.2 (KHTML, like Gecko) Chrome/5.0.342.9 Safari/533.2
(einige braindead-Skripte sind auf der Suche nach "Gecko" in das Skript, denn das ist, was Firefox hat; und don T get me started auf das erste "Mozilla")Nur so kann ich herausfinden, wie man meine version des IE8 zu sagen, dass es IE7 ist, die Kompatibilitätsansicht zu aktivieren. Sehen http://blogs.msdn.com/b/ie/archive/2008/08/27/introducing-compatibility-view.aspx
Herausstellt, seine browser wurde eingestellt, um alle anzeigen 'intranet-sites" im Kompatibilitätsmodus. Auch, ja, der Kompatibilitätsmodus ändert die Benutzer-agent-Zeichenfolge.
Fand diese süßen Funktion auf GIT (in den Kommentaren):