wake-up-neo.com

IE10 wird im IE7-Modus gerendert. Wie erzwinge ich den Standardmodus?

Auf der Microsoft-Website wird behauptet, dass eine einfache Doctype-Deklaration ausreicht. Aber auch ein so kurzes Dokument greift auf den IE7-Modus zurück:

<!DOCTYPE html>
<html>
<head>
   <title></title>
</head>
<body>

</body>
</html>

http://d.pr/i/fvzb+

121
firedev

Internet Explorer geht davon aus, dass die meisten Webseiten für frühere Versionen von IE) geschrieben wurden, und untersucht den Doctype, die Meta-Tags und HTML, um den besten Kompatibilitätsmodus zu ermitteln (manchmal falsch) doctype IE versetzt Ihre Website weiterhin in den Kompatibilitätsmodus, wenn es sich um eine Intranetsite handelt.

Um sicherzustellen, dass Ihre Website immer den neuesten Standardmodus verwendet, können Sie entweder sicherstellen, dass Display intranet sites in Compatibly Deaktiviert ist. Sie müssen dies jedoch auf jedem Computer tun, der lokal auf dem Webserver installiert ist (Anweisungen finden Sie unten).

Alternativ und noch besser können Sie den X-UA-kompatiblen Header verwenden, um dies vom Server zu deaktivieren. Es ist wichtig zu beachten, dass das Verwenden des Meta-Tags nicht funktioniert !.

<!-- Doesn't always work! -->
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />

In der gesamten MSDN wird erwähnt, dass die Verwendung eines Host-Headers oder eines Metatags sogar intranet sites Überschreiben sollte. Der Artikel Kompatibilitätsmodi in Internet Explorer 8 verstehen sagt Folgendes.

Viele interne Unternehmenswebsites sind für Internet Explorer 7 optimiert, sodass diese Standardausnahme diese Kompatibilität beibehält. ... Wenn ein Meta-Tag oder ein http-Header verwendet wird, um einen Kompatibilitätsmodus für das Dokument festzulegen, werden diese Einstellungen überschrieben.

In der Praxis funktioniert dies jedoch nicht. Die Verwendung eines Host-Headers ist die einzige Option, die funktioniert. Der Kommentarbereich des Artikels zeigt auch zahlreiche Beispiele für genau dieses Problem.

Die Verwendung eines Meta-Tags hat auch einige andere Probleme, z. B. das Ignorieren des Tags, wenn es sich nicht direkt unter dem <head> - Tag befindet oder wenn zu viele Daten davor sind (4k). Es kann auch dazu führen, dass das Dokument in einigen Versionen von IE langsamer gerendert wird. Weitere Informationen zu diesen Problemen finden Sie im MSDN-Artikel Best Practice: Get your = HEAD in order .

Hinzufügen des X-UA-kompatiblen Headers

Wenn Sie .net verwenden und IIS Sie können dies zur web.config hinzufügen, können Sie dies auch programmgesteuert tun:

<system.webServer>
    <httpProtocol>
      <customHeaders>
        <add name="X-UA-Compatible" value="IE=Edge" />
      </customHeaders>
    </httpProtocol>
</system.webServer>

Wenn Sie nicht IIS verwenden, ist dies in jeder Sprache einfach. Im Folgenden erfahren Sie, wie Sie dies in PHP tun:

header('X-UA-Compatible: IE=Edge');

Solange der X-UA-kompatible Header mit dem Doctype html5 vorhanden ist, wird eine Site immer im neuesten Standardmodus ausgeführt.

Deaktivieren der Kompatibilitätsansicht
Es kann dennoch nützlich sein, die Kompatibilitätsansicht zu deaktivieren. Deaktivieren Sie dazu Display all intranet sites in compatibility view In den Einstellungen der Kompatibilitätsansicht.

Compatibility View Settings

Sie können dies anzeigen, indem Sie alt drücken, um das Menü aufzurufen

enter image description here

Bearbeiten Diese Antwort bezieht sich auch auf IE9

243
Daniel Little

Das funktioniert bei mir ..

<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
25
JGilmartin

Fügen Sie dem Kopf das folgende Tag hinzu

<meta http-equiv="X-UA-Compatible" content="IE=11,IE=10,IE=9,IE=8" />
10
Jeow Li Huan

Das Meta-Tag hat keine Auswirkungen auf Intranetsites und mein Problem war das Rendern von IE10 im IE10-Kompatibilitätsmodus. Das Problem wurde für mich gelöst, indem ich @ Jeows Antwort weiterführte und diesen Wert in einem http-Header verwendete, indem ich web.config Unter IIS Folgendes hinzufügte:

<system.webServer>
  <httpProtocol> 
    <customHeaders> 
      <clear />
      <!-- <add name="X-UA-Compatible" value="IE=Edge" /> not good enough -->
      <add name="X-UA-Compatible" value="IE=11,IE=10,IE=9,IE=8" /> 
    </customHeaders> 
  </httpProtocol>
</system.webServer>

Zu IE) Zwecken umfassen Intranetsites öffentlich zugängliche Sites, die nicht extern weitergeleitet werden. Beispielsweise würde ein Mitarbeiter von Stackoverflow, der im Büro arbeitet, Stackoverflow.com wahrscheinlich im Kompatibilitätsmodus sehen.

2
o.v.

Bei mir hat es perfekt geklappt, als ich folgendes gemacht habe:

Am http://msdn.Microsoft.com/en-us/library/gg699338 (v = vs.85) .aspx

Verwendete das genaue Beispiel, das sie in der ersten Box zur Verfügung stellten (fügte das fehlende </html> Unten hinzu), öffnete es in IE10 und Standards wurden erzwungen aber sicher.

Mein Vorschlag wäre, Ihren leeren Code durch tatsächlichen Inhalt (etwas Einfaches) zu ersetzen und zu sehen, was er tut.

1
ZacNespral21