Wie zu erkennen, IE7, indem der user-agent-string, wobei neuere IE-Versionen läuft im quirks-Modus

Brauche ich, um zu erkennen, IE7 (und IE6) verwenden die user-agent-string:

Habe ich folgenden regex:

navigator.userAgent.match(/MSIE [67]\./)

Jedoch IE9 in den quirks-Modus passt auch die regex mit folgendem user-agent:

Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 7.1; Trident/5.0; .NET CLR 2.0.50727; SLCC2; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.3; .NET4.0C)

Ich konnte zwei regexes:

navigator.userAgent.match(/MSIE [67]\./) !== null 
  && navigator.userAgent.match(/Trident\/5\.0/) === null

Gibt es eine Möglichkeit, die ich kombinieren kann, dass Sie in eine?

  • Erste Frage wäre natürlich: Warum "müssen" zu erkennen, IE7 per User-Agent-string? Feature-Erkennung sollte bevorzugt werden, die über browser-Erkennung, und dann gibt es immer Conditional Comments.
  • Ich wusste, dass einer kommen würde 😛 ich brauche, um ein Problem zu beheben, die nicht im Zusammenhang mit einer bestimmten Funktion. Das Problem ist nur bei nativen IE7-Installationen (nicht im IE7+ im Kompatibilitätsmodus). Schließlich, ich kann nicht verwenden Sie bedingte Kommentare, wie die Lösung vertrieben wird, als ein javascript-widget. Also soweit ich sehen kann, mit user-agent-strings ist die beste option.
  • Vielleicht sollten Sie sich eine Frage stellen über dieses bestimmte Thema. Ist es ein rendering-Problem oder ein JScript-Problem? Wenn es letzteres ist, dann JScripts Bedingte Kompilierung Anweisungen kann nützlich sein.
  • Es ist ein javascript Problem. Dies ist eine temporäre Lösung, so könnte ich nur mit dem doppelten user-agent matching. Ich werde prüfen, in die bedingte Kompilierung aber 🙂 Danke!
InformationsquelleAutor Jørgen | 2012-05-15
Schreibe einen Kommentar