Detaillierte Erklärung des Unterschieds zwischen der IE8-Kompatibilitätsansicht (IE7-Modus) und dem eigenständigen IE7

Detaillierte Erklärung des Unterschieds zwischen der IE8-Kompatibilitätsansicht (IE7-Modus) und dem eigenständigen IE7

eins. Übersicht über die IE8-Kompatibilitätsansicht <br />Um das Problem zu lösen, dass die neue Version des Browsers nicht mit alten Websites kompatibel ist, wurde dem IE8-Browser eine Funktion namens „Kompatibilitätsansicht“ hinzugefügt, mit der Webseiten gemäß den IE7-Codespezifikationen angezeigt werden können. Dies kann die meisten (aber nicht alle) Webseitenprobleme lösen, die durch inkonsistente Codestandards verursacht werden.
zwei. Unterschied zwischen „Browsermodus“ und „Dokumentmodus“
Die Kompatibilitätsansicht umfasst zwei wichtige Funktionen: „Browsermodus“ und „Dokumentmodus“. Drücken Sie in IE8 F12, um „Entwicklertools“ zu öffnen. In der Menüleiste sehen Sie das Umschaltmenü für „Browsermodus“ und „Dokumentmodus“, wo Sie zwischen verschiedenen Webseitenmodi wie IE7/8 wechseln können.
Was ist also der Unterschied zwischen „Browsermodus“ und „Dokumentmodus“?
Der „Browsermodus“ wird verwendet, um den Standarddokumentmodus des IE für die Webseite umzuschalten, bedingte Kommentare für verschiedene Browserversionen zu analysieren und den Wert der User-Agent-Zeichenfolge an den Website-Server zu senden. Anhand der unterschiedlichen vom Browser zurückgegebenen User-Agent-Strings kann die Website die Browserversion und die installierten Funktionen ermitteln, sodass an unterschiedliche Browser unterschiedliche Seiteninhalte zurückgegeben werden können.
Der Browsermodus von IE8 ist standardmäßig IE8. Benutzer können manuell in einen anderen Browsermodus wechseln, indem sie auf die Schaltfläche „Kompatibilitätsansicht“ neben der Adressleiste klicken. In IE8 zeigt die IE8-Kompatibilitätsansicht die Webseite im IE7-Dokumentmodus an und sendet die IE7-Benutzeragentzeichenfolge an den Server.
Der „Dokumentmodus“ wird verwendet, um anzugeben, welche Version der Seitenlayout-Engine des Internet Explorers (Trident) zum Parsen und Rendern des Webseitencodes verwendet werden soll. Durch das Wechseln des Dokumentmodus wird die Webseite aktualisiert, die Versionsnummer in der Benutzeragentzeichenfolge wird jedoch nicht geändert und die Webseite wird auch nicht erneut vom Server heruntergeladen. Wenn Sie den Browsermodus wechseln, wechselt der Browser automatisch in den entsprechenden Dokumentmodus.
Im Allgemeinen sollten beide auf dieselbe Version eingestellt sein, aber was ist, wenn sie unterschiedlich sind? Oder gibt es einen Prioritätsunterschied zwischen den beiden?
Bitte beachten Sie den folgenden MSDN-Beitrag: Just The Facts: Recap of Compatibility View
http://blogs.msdn.com/b/ie/archive/2009/02/16/just-the-facts-recap-of-compatibility-view.aspx
Highlights:
•Wir haben die Verwendung des Tags „X-UA-Compatible“ für Websites propagiert, die nicht aktualisiert werden können, um den Standardmodus von IE8 zu unterstützen. Mit dem Tag kann ein Webautor das genaue Verhalten im Standardmodus angeben, für das seine Website am besten geeignet ist – IE8-Standards (wiederum die Standardeinstellung, wenn kein Header vorhanden ist) oder IE7-Standards. Wenn Sie beispielsweise den Wert „IE=EmulateIE7“ verwenden, zeigt IE8 eine Website „wie IE7“ an.
•Wir haben für Endbenutzer und Unternehmen/IT-Mitarbeiter Lösungen zur Kompatibilität von Websites unter dem Oberbegriff „Kompatibilitätsansicht“ bereitgestellt. Die „Kompatibilitätsansicht“ ermöglicht IE8-Benutzern ein großartiges Erlebnis, selbst wenn sie Websites besuchen, bei denen noch keiner der beiden oben genannten Schritte ausgeführt wurde. Außerdem hilft sie IT-Organisationen dabei, die Kompatibilität mit der großen Anzahl von Branchenwebsites aufrechtzuerhalten, die heute Internet Explorer 7-kompatibel sind.
• Die Kompatibilitätsansicht und das X-UA-kompatible Tag sind nicht gleichwertig. Die Kompatibilitätsansicht wird auf dem Client ausgeführt. Sie wirkt sich auf drei Dinge aus: die User-Agent-Zeichenfolge, den Versionsvektor (der bei der Auswertung bedingter Kommentare verwendet wird) und auf welchen Modus DOCTYPES, die Standards auslösen, abgebildet werden – IE8-Standards oder IE7-Standards. Das X-UA-kompatible <META>-Tag/der X-UA-kompatible Header wird im Seiteninhalt/auf der Serverseite verwendet und überschreibt, wenn vorhanden, die Einstellungen der Kompatibilitätsansicht auf dem Client vollständig. Es wirkt sich auf zwei Dinge aus: den Versionsvektor und auf welchen Modus DOCTYPES, die Standards auslösen, abgebildet werden. Es kann die UA-Zeichenfolge nicht beeinflussen, da es bereits zu spät ist, dies zu ändern – der Client hat bereits die GET-Anforderung an den Server gestellt (und sie enthält eine UA-Zeichenfolge). Für Entwickler bedeutet dies, dass, wenn Ihre Site auf der User-Agent-Zeichenfolge basiert, das Hinzufügen des X-UA-kompatiblen Tags (damit IE8 Ihre Site im IE7-Standardmodus anzeigt) Ihre Website nicht kompatibel macht – Sie müssen auch Ihre User-Agent-Zeichenfolgenerkennungslogik aktualisieren.
Zusammenfassend gibt es zwei Möglichkeiten, IE8 mit dem IE7-Modus kompatibel zu machen. Eine davon ist serverseitig, indem der Programmierer den Dokumentmodus der Webseite steuert und ändert, d. h. über Meta (X-UA-Compatible IE=EmulateIE7), um die Seite zu zwingen, mit IE7 kompatibel zu werden.
wie folgt:

Code kopieren
Der Code lautet wie folgt:

<head runat="server">
<meta http-equiv="X-UA-kompatibel" content="IE=7" />
<title>cest</title>
</Kopf>

Wenn Sie diesen Satz nicht schreiben, wird standardmäßig IE8 verwendet.
Der andere Fall liegt auf der Clientseite. Wenn die Website keine Zeit hatte, die Metadaten zu ändern, und der Benutzer IE8 installiert hat und feststellt, dass die Anzeige nicht normal ist, besteht der letzte Ausweg darin, auf die Schaltfläche „Kompatibilitätsansicht“ zu klicken, was sich letztendlich im Benutzeragent widerspiegelt. Das heißt, nach dem Klicken auf die Schaltfläche „Kompatibilitätsansicht“ wird der übermittelte HTTP-Anforderungsheader als MSIE7.0 umgeschrieben, wodurch sich der Client als IE7 tarnt, um die Anforderung zu senden.
wie folgt:
Benutzer-Agent: Mozilla/4.0 (kompatibel; MSIE 7.0; Windows NT 6.0; Trident/5.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.30729; .NET4.0C; .NET4.0E)
Laut MSDN hat das Ändern von Meta (X-UA-Compatible IE=EmulateIE7) eine höhere Priorität als das Klicken auf die Kompatibilitätsansicht. Dadurch kann die Auswahl der Kompatibilitätsansicht überschrieben werden. Mit anderen Worten: Sobald die Website überarbeitet und freigegeben wurde, kann die im Browser des ursprünglichen Benutzers eingestellte Kompatibilitätsansicht ungültig gemacht werden, solange Meta eingestellt ist, wodurch eine automatische Anpassung an die neue Version des IE8-Browsers erfolgt.
drei. Die IE8-Kompatibilitätsansicht (IE7-Modus) ist nicht genau dasselbe wie die eigenständige IE7
Siehe den Beitrag von Technet.Microsoft:
Was ist die Kompatibilitätsansicht?
http://technet.microsoft.com/zh-cn/ff966533
Die Kompatibilitätsansicht ist eine Funktion von Windows Internet Explorer 8, die es dem Browser ermöglicht, eine Webseite nahezu identisch darzustellen, wie es bei Windows Internet Explorer 7 der Fall wäre.
In Internet Explorer 8 ändert die Kompatibilitätsansicht die Art und Weise, wie der Browser Code interpretiert, der in CSS, HTML und dem Document Object Model (DOM) geschrieben ist, um Internet Explorer 7 zu entsprechen. Eine Site, die ein Benutzer in der Kompatibilitätsansicht von Internet Explorer 8 anzeigt, ist fast identisch mit einer Site, die der Benutzer in Internet Explorer 7 anzeigt. Die Kompatibilitätsansicht ändert jedoch nicht, wie der Browser den gesamten Code interpretiert. Beispielsweise können die Änderungen in Internet Explorer 8 hinsichtlich der Art und Weise, wie der Browser ActiveX, den Parser, AJAX, JavaScript, Netzwerke und Sicherheit verarbeitet, immer noch Kompatibilitätsprobleme verursachen. Die Kompatibilitätsansicht ändert diese Verhaltensweisen nicht.
In einer Unternehmensumgebung besteht in manchen Bereichen ein geringeres Risiko für Kompatibilitätsprobleme. Intranetzonen-Websites verwenden beispielsweise standardmäßig die Kompatibilitätsansicht. Client-Webanwendungen, die mithilfe des Webbrowser-Steuerelements oder des WebOC (Internet Explorer-Rendering-Engine) gerendert werden, weisen ebenfalls ein geringeres Risiko für Kompatibilitätsprobleme auf, da Internet Explorer 8 standardmäßig einen Kompatibilitätsmodus für das WebOC verwendet. Die Standardkonfigurationseinstellungen für die Kompatibilitätsansicht gewährleisten jedoch möglicherweise keine vollständige Kompatibilität. Um festzustellen, ob eine Website oder Webanwendung mit Internet Explorer 8 kompatibel ist, sollten Sie die Website oder Webanwendung testen.
Weitere Informationen zu den Unterschieden zwischen der Kompatibilitätsansicht von Internet Explorer 8 und Internet Explorer 7 finden Sie im Blog „Sitekompatibilität und Internet Explorer 8“. Eine Liste der Dinge, die Sie beim Upgrade auf Internet Explorer 8 überprüfen sollten, finden Sie im Internet Explorer 8 Readiness Toolkit.
Weitere Informationen zur Kompatibilitätsansicht finden Sie im Internet Explorer-Teamblog.
Siehe den MSDN-Beitrag:
1. Unterschiede zwischen der IE8-Kompatibilitätsansicht und IE7
http://blogs.msdn.com/b/ie/archive/2009/03/12/site-compatibility-and-ie8.aspx
Auszug:
Wir bemühen uns, die Kompatibilitätsansicht so nah wie möglich an IE7 anzupassen, machen aber Ausnahmen. Viele dieser Ausnahmen ermöglichen sofort verbesserte Sicherheits- und Zugänglichkeitsfunktionen, selbst für Websites, die noch nicht in den IE8-Standardmodus migriert sind.
2. Was GENAU macht die Kompatibilitätsansicht in IE8?
http://webmasters.stackexchange.com/questions/2219/what-exactly-does-compatibility-view-do-in-ie8
Highlights:
Die Kompatibilitätsansicht rendert die Seite, als wäre es Internet Explorer 7 (einschließlich Javascript). Es gibt ein paar Unterschiede zwischen IE8 mit CV und reinem IE7, aber im Wesentlichen ist es dasselbe. Wenn Sie wirklich im Detail wissen möchten, was vor sich geht, lesen Sie Just The Facts: Recap of Compatibility View im IE MSDN-Blog.
Sie können IE8 auch mit diesem Meta-Tag zwingen, CV zu verwenden:
<meta http-equiv="X-UA-kompatibel" content="IE=EmulateIE7" />
Wenn Sie Probleme haben, würde ich vorschlagen, zuerst zu prüfen, ob Ihr HTML einen gültigen Dokumenttyp enthält (der einfachste ist <!DOCTYPE html>, der den Standardmodus erzwingt). Damit werden 90 % Ihrer Probleme gelöst, insbesondere mit IE6.
Die Schlussfolgerung lautet: Der Kompatibilitätsmodus von IE8 unterscheidet sich vom unabhängigen IE7, und es gibt noch einige Unterschiede. Er beinhaltet nicht einfach einen vollständigen IE7 in IE8.
Vier. Details der spezifischen Unterschiede
1. Dokumentübergreifende Kommunikation
Hacks, die eine domänen- und dokumentenübergreifende Kommunikation ermöglichen, wurden aus Sicherheitsgründen deaktiviert.
Lösung: Verwenden Sie Cross Document Messaging (XDM), um diese Änderung zu umgehen.
2. Erweitern des Event-Objekts
IE stellt neue Eigenschaften für bestimmte AJAX-Funktionen wie Cross Document Messaging (XDM) bereit, sogar in der Kompatibilitätsansicht. Das Hinzufügen benutzerdefinierter Eigenschaften zum Ereignisobjekt kann mit diesen neuen Eigenschaften, wie z. B. „Quelle“, in Konflikt geraten.
event.source = myObject; // Nur lesbar im IE8
Lösung: Ändern Sie die Namen widersprüchlicher benutzerdefinierter Eigenschaften, um Kollisionen zu vermeiden.
event.meineQuelle = meinObjekt;
3. Attributreihenfolge
Die Reihenfolge der Attribute hat sich geändert, was sich sowohl auf die Attributsammlung als auch auf die Werte von innerHTML und outerHTML auswirkt. Seiten, die von einer bestimmten Attributreihenfolge abhängen, können beschädigt werden.
attr = elm.attributes[1]; // Kann in IE8 abweichen
Lösung: Referenzieren Sie Attribute nach Namen und nicht nach ihrer Position innerhalb der Attributsammlung.
attr = elm.attributes["id"];
4. Festlegen nicht unterstützter CSS-Werte
Das Zuweisen von CSS-Werten, die in IE7 nicht unterstützt wurden, im IE8-Standardmodus jedoch unterstützt werden, erzeugt in der IE8-Kompatibilitätsansicht keine Ausnahmen. Einige Sites verwenden diese Ausnahmen, um zu bestimmen, ob ein bestimmter Wert für eine CSS-Eigenschaft unterstützt wird oder nicht.

Code kopieren
Der Code lautet wie folgt:

Versuchen
{
elm.style.display = "Tabellenzelle";
} Fang(e)
{
// Dies wird im IE7 ausgeführt,
// aber nicht IE8, unabhängig vom Modus
}

Lösung: Ohne Versionserkennung ist dieses Problem schwer zu umgehen. Wenn dieses Verhalten für eine Seite wichtig ist, ist es möglicherweise am besten, die Seite so zu aktualisieren, dass sie im IE8-Standardmodus ausgeführt wird.

<<:  So sichern Sie die MySQL-Datenbank regelmäßig automatisch

>>:  Implementierung zum Erstellen benutzerdefinierter Images mit Dockerfile

Artikel empfehlen

So überwachen Sie Tomcat mit LambdaProbe

Einführung: Lambda Probe (früher bekannt als Tomc...

Tutorial zur Installation von MYSQL8.0 auf Alibaba Cloud ESC

Öffnen Sie das Verbindungstool. Ich verwende Moba...

Ausführliche Erklärung der Sonderberechtigungen SUID, SGID und SBIT in Linux

Vorwort Für die Berechtigungen von Dateien oder V...

Vue-Beispielcode für die Online-Vorschau von Office-Dateien

Ich arbeite derzeit an elektronischen Archiven un...

Teilen Sie 13 hervorragende Web-Wireframe-Design- und Produktionstools

Wenn Sie mit der Arbeit an einem Projekt beginnen...

Zusammenfassung der Fallstricke beim Importieren von OVA-Dateien in VMware

Quelle des Problems Wie wir alle wissen, erzeugt ...

Detaillierte Erläuterung des Beispiels für MySQL-Integritätsbeschränkungen

Dieser Artikel beschreibt die MySQL-Integritätsbe...

Was macht die MySQL-Datenbank?

MySQL ist ein relationales Datenbankverwaltungssy...

So lösen Sie das Problem der automatischen Paketaktualisierung im Debian-System

Ich weiß nicht, wann es angefangen hat, aber jede...

So implementieren Sie vertikale Textausrichtung mit CSS (Zusammenfassung)

Die Standardanordnung von Text in HTML ist horizo...

Detaillierte Erklärung zur Verwendung von JavaScript WeakMap

Ein WeakMap-Objekt ist eine Sammlung von Schlüsse...

Lösung für den Absturz der Grafikkarte auf Linux-Servern

Wenn die Auflösung der Anmeldeoberfläche besonder...