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!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Vorausgesetzt, der "Trident" - Teil kommt immer nach der MSIE Teil, können Sie mit einem lookahead:
Ich bin nicht vertraut mit user agents strings, aber ich vermute, dass vielleicht IE10 im quirks-Modus könnte eine Trident-version > 5, so konnte man es zu ändern:
UPDATE: zweite regex bearbeitet werden, um zum Beispiel frühere Versionen von Trident zu, z.B. Trident/4.0 im IE8, als auch als potentielle spätere Versionen >= 10.
UPDATE2: Gesäubert RegEx ist gültig in javascript.
Ich bin Entsendung eine JavaScript-Lösung zusammen mit der regex....
Diese Lösung ist tatsächlich gegeben, meine Microsoft, können Sie sich beziehen dieser link
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)
Vielleicht nicht relevant, aber warum nicht zu versuchen
document&&document.documentMode?document.documentMode:variable
wovariable
wäre Bezeichner für nicht IE überhaupt?