Vor dem Lesen:
Bevor Sie den spezifischen Inhalt des Artikels lesen, hoffe ich, dass Sie zuerst IE8 öffnen, http://www.taobao.com öffnen und dann in die Adressleiste Folgendes eingeben können:
javascript:alert(document.documentMode +navigator.userAgent);void(0)
Ich weiß nicht, ob Sie überrascht sind, nachdem Sie die Ergebnisse gesehen haben. Ich finde es jedenfalls sehr seltsam, da es im Meta der Seite kein Kompatibilitäts-Tag und im HTTP-Header kein X-UA-kompatibles Tag gibt, wenn Fiddler es überprüft it. Warum zum Teufel läuft die Website im IE7 -Modus?
IE7-Kompatibilitätsmodus und Kompatibilitätsansicht
Als ich gestern in Word of Mouth einen Artikel über die hohe Anpassungsfähigkeit von IFrame las, stellte ich fest, dass sich die darin bereitgestellte Demo von meiner Demo in IE8 unterschied. Das Online-Ergebnis war offensichtlich das gleiche wie in IETester7 kein Kompatibilitätszeichen im Meta, Fiddler prüft, ob im http-Header kein X-UA-Kompatibilitätszeichen vorhanden ist, aber warum unterscheiden sich die Online-Ergebnisse von den lokalen? Das machte mich deprimiert. Nachdem ich es mir noch einmal angesehen hatte, stellte ich fest, dass die Schaltfläche „Kompatibilitätsansicht“ im IE8 nicht angezeigt wurde. Das muss der Grund sein.
Später habe ich den Artikel „Just The Facts: Recap of Compatibility View“ gefunden. Obwohl er das Problem nicht gelöst hat, möchte ich ihn gerne teilen und eine seiner Passagen zitieren.
Die Kompatibilitätsansicht und das X-UA-Compatible-Tag sind nicht gleichwertig
Die Kompatibilitätsansicht ist etwas, das Sie auf dem Client tun. Sie wirkt sich auf drei Dinge aus: die Benutzer-Agent-Zeichenfolge (die bei der Auswertung bedingter Kommentare verwendet wird) und den Modus, dem DOCTYPEs zugeordnet werden – IE8-Standards oder IE7-Standards -UA-Compatible <META>-Tag/Header ist etwas, das Sie im Seiteninhalt/auf der Serverseite verwenden und, sofern vorhanden, die Einstellungen der Kompatibilitätsansicht auf dem Client vollständig überschreibt. Es beeinflusst zwei Dinge: den Versionsvektor und welche Modus-DOCTYPEs Standards auslösen Zuordnen zu. Es kann sich nicht auf die UA-Zeichenfolge auswirken, da es bereits zu spät ist, dies zu ändern – der Client hat die GET-Anfrage bereits an den Server gestellt (und sie enthält eine UA-Zeichenfolge, wenn Ihre Site wechselt). Wenn Sie in der Zeichenfolge „User Agent“ nur das Tag „X-UA-Compatible“ hinzufügen (damit IE8 Ihre Website im Modus „IE7-Standards“ anzeigt), wird Ihre Website nicht kompatibel – Sie müssen außerdem Ihre Logik zur Erkennung von Zeichenfolgen für den Benutzeragenten aktualisieren Also.
Das bedeutet, dass die Kompatibilitätsansicht drei Rollen spielt:
Das Meta-Tag spielt nur zwei Rollen: 1. Version, 2. Dokumenttyp
(Hier wird gesagt, dass das Meta-Tag keinen Einfluss auf den UserAgent hat. Es sollte auf die UA auf der Serverseite verweisen. Da die Client-Anfrage gesendet wurde und UA enthält, ist sie nicht betroffen. Die UA des Clients bleibt jedoch erhalten betroffen und ie7 wird angezeigt.)
richtig:
(Möglicherweise war der vorherige Test falsch.) Die Benutzeroberfläche des Clients wird nicht beeinträchtigt, sondern nur document.documentMode
Zusätzlich:
<META>-Tag/Header bezieht sich jeweils auf: <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7"> und das Hinzufügen von http-Headern auf der Serverseite, z. B. in der .net-Konfigurationsdatei:
Darüber hinaus können Sie auch HTTP-Header zu IIS oder Apache hinzufügen:
Problemlösung
Zu diesem Zeitpunkt ist das Problem am Anfang des Artikels immer noch nicht gelöst. Gestern Abend habe ich zufällig den Artikel von Qin Ge über die Verwendung von doctype zum Aktivieren des Browsermodus gesehen. Denken Sie daran, dass der Kompatibilitätsmodus auch aktiviert wird Der Artikel oben Einer der beiden Kommentare lautet: res://iecompat.dll/iecompatdata.xml (nur IE8) und es wird angezeigt: Liste der Kompatibilitätsansichten. Auf diese Weise können Sie die Domäne endlich finden Namen von Koubei und Taobao in dieser Liste, daher denke ich, dass dies die Antwort auf die Frage am Anfang dieses Artikels sein sollte. Sie können auch einen Domainnamen in dieser Liste finden, ihn öffnen und das Javascript am Anfang eingeben der Artikel in der Adressleiste (ps: Microsoft hat zu viele Listen), der so viele Websites in IE7 konvertiert.
<Konfiguration>
<system.webServer>
<httpProtokoll>
<customHeaders>
<clear />
<add name="X-UA-Compatible" value="IE=EmulateIE7" />
</customHeaders>
</httpProtocol>
</system.webServer>
</configuration>