Ich muss wissen, ob der Browser, der sich über die Benutzeragentenzeichenfolge als IE7 oder IE8 identifiziert, wirklich diese Browser sind oder ob es sich um IE9 im 7- oder 8-Kompatibilitätsmodus handelt.
Nach dem, was ich in der Benutzeragentenzeichenfolge sehen kann, bietet ein IE9 im IE7-Kompatibilitätsmodus eine identische Zeichenfolge wie ein echter IE7. Gibt es eine zusätzliche Eigenschaft / ein zusätzliches Element / Objekt, die ich testen kann, um festzustellen, ob es sich um "wirklich" verkleideten IE9 handelt?
Ich gehe davon aus, dass der Dokumentmodus nicht hilft, da die Seite, auf die mein Skript geladen wird, entweder Macken erzwingen oder eine bestimmte Einstellung erzwingen kann.
Ich hoffe, dass IE9 eine Eigenschaft hat, die existiert und testbar ist, unabhängig davon, ob es sich im 7-, 8- oder 9-Modus befindet.
Bearbeitet, um hinzuzufügen ...
OK, ich sehe, wo ich jetzt falsch liege. Ich habe das Dropdown-Menü "Browsermodus" verwendet und auf IE8 und IE7 umgeschaltet und dachte, dies sei "IE8-Kompatibilitätsmodus" bzw. "IE7-Kompatibilitätsmodus". Das stimmt natürlich nicht. Der Browsermodus der Entwicklertools schaltet ihn wirklich auf "wie" diese alten Browser um, daher ist es nur richtig, dass die ursprünglichen Useragent-Zeichenfolgen gemeldet werden.
Wenn ich den Browsermodus in IE9- oder IE9-Kompatibilität verlasse und stattdessen die Dropdown-Varianten für den Dokumentmodus ausprobiere, wird "Trident / 5.0" tatsächlich in allen 8 Kombinationen (zwei Browsermodi und 4 Dokumentmodi) angezeigt. Ich muss mich nur von der Auswahl des Browsermodus IE7 und IE8 fernhalten, da es sich tatsächlich um (simulierte) IE7 und IE8 handelt.
Es gibt also keine Möglichkeit, dass eine Seite, ein Nicht-Entwickler-Benutzer, ein Meta-Tag oder die Kompatibilitätsliste von Microsoft IE9 in diesen nicht identifizierbaren Zustand versetzt.
Nur die Verwendung if(navigator.userAgent.indexOf("Trident/5")>-1)
wird ausreichen.
Keine Sorge, dies gilt nicht für Stile, Formatierungen, Logik oder Seiteninhalte. Ich benutze die Feature-Erkennung für diese Dinge. Ich muss nur IE9 erkennen (unabhängig davon, in welchem Modus es sich befindet) und eine Entscheidung über den Inhalt ohne Seiten treffen.
Vielen Dank, dass Sie mich mit Ihren Vorschlägen und Links zur Antwort geführt haben.