Wie erzwinge ich, dass Internet Explorer im Standardmodus und NICHT in Macken gerendert wird?

74

Ich codiere ein Frontend, das im IE7-Standardmodus und im IE8-Standardmodus gut funktioniert.

Wenn ich Internet Explorer starte und die Seite lade, wechseln sowohl IE7 als auch IE8 direkt in den Quirks-Modus. Wie kann ich sowohl IE7 als auch IE8 zwingen, die Seite immer im Standardmodus zu laden?

Ich habe bisher keine speziellen Meta-Tags hinzugefügt.

Danke, dass du mir geholfen hast

Bearbeiten: Mein Doctype und mein Kopf sehen im Moment wie folgt aus:

<!DOCTYPE html> 
<html lang="de"> 
<head> 
    <title>...</title> 
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta charset="utf-8" />
    <script src="js/html5.js"></script> 

    (...)
</head>
Matze
quelle
7
Ich weiß, dass ich zu spät zur Party komme, aber hier ein kurzer Hinweis: Wenn Sie den Rendermodus in den IE-Entwicklertools festlegen, bleibt dieser Modus beim nächsten Laden der Seite erhalten. Wenn Sie also den Quirks-Modus wählen, bleibt dieser Modus so lange erhalten, bis Sie ihn manuell ändern oder die Registerkarte schließen. Also viel Spaß.
Matchu
1
Matchu, dein Kommentar war für mich von unschätzbarem Wert. Durch das manuelle Einstellen des Render-Modus habe ich meine Tests völlig durcheinander gebracht! Vielen Dank! :)
Brian Beckett
Wenn Sie keinen http-Header verwenden, funktioniert dies
Daniel Little
1
Es ist ganz einfach: Bestimmen des Dokumentmodus von IE 9
Sam

Antworten:

87

Dies ist der Weg, um absolut sicher zu sein:

<!doctype html> <!-- html5 -->
<html lang="en"> <!-- lang="xx" is allowed, but NO xmlns="http://www.w3.org/1999/xhtml", lang:xml="", and so on -->
<head>
<meta http-equiv="x-ua-compatible" content="IE=Edge"/> 
<!-- as the **very** first line just after head-->
..
</head>

Grund:
Jedes Mal , wenn IE trifft etwas , dass Konflikte, es zurück zu „IE 7 - Standards - Modus“ wird, ignoriert das x-ua-compatible.

(Ich weiß, dass dies eine Antwort auf eine sehr alte Frage ist, aber ich habe selbst damit gekämpft, und das obige Schema ist die richtige Antwort. Es funktioniert jedes Mal vollständig.)

davidkonrad
quelle
@Sameer Alibhai, natürlich! Es ist so impliziert, dass ich es vergessen habe ;-) jetzt korrigiert.
Davidkonrad
1
Dies ist leider nicht korrekt. Ein Webserver im lokalen Netzwerk aktiviert weiterhin den Mackenmodus, wenn Sie all diese Dinge haben. Es ist auch IE = Edge, nicht nur Edge im Inhalt des Meta-Tags.
mjaggard
3
@davidkonrad: also wohin gehen lang info und ie-spezifische klassen dann? Mein HTML sieht im Moment so aus (Beispiel IE8): <html class="ie ie8 ie_old" lang="it-IT">Sorry, kann nicht zur letzten Antwort kommentieren, habe noch nicht den nötigen Ruf ...
blu bla
1
@davidkonrad Du darfst ein lang-Attribut auf deinem HTML-Tag haben und auch ein kompatibles Meta-Tag!
andlrc
1
Hatte gerade heute ein Problem damit, dass eine Website im IE9 ohne offensichtliche Gründe vollständig zerstört wurde. Das Entfernen aller Attribute aus dem htmlTag hat den Trick getan! Vielen Dank tausendmal, steckte fast 2 Stunden fest und versuchte schon alles, was ich mir vorstellen konnte!
Kevin G.
33

Leider möchten sie, dass wir ein Tag verwenden, um ihren Browser wissen zu lassen, was zu tun ist. Schauen Sie sich diese Dokumentation an. Sie fordert uns auf, Folgendes zu verwenden:

<meta http-equiv="X-UA-Compatible" content="IE=edge" >

und es sollte tun.

Alfabravo
quelle
3
Dies wird es nicht aus dem Quirks-Modus oder in den Quirks-Modus werfen, sondern nur den "Emulationsmodus" ändern. IE6 kann im Nicht-Macken-Modus ausgeführt werden (obwohl das nicht bedeutet, dass es nicht sehr schrullig ist!).
Wenn sollte das Ding gezwungen werden, im Standardmodus zu laden.
Alfabravo
Dies funktioniert für IE8. IE7 wechselt jedoch immer noch zuerst in den Mackenmodus.
Labyrinth
IE7 ist ein echter Schmerz. Gut zu wissen, dass du uns dieses Verhalten erzählst, Labyrinth.
Alfabravo
11
  1. Verwenden Sie den HTML5-Doctype am Anfang der Seite.

    <!DOCTYPE html>

  2. Erzwingen Sie, dass der IE den neuesten Rendermodus verwendet

    <meta http-equiv="X-UA-Compatible" content="IE=edge">

  3. Wenn Ihr Zielbrowser ie8 ist, überprüfen Sie Ihre kompatiblen Einstellungen in IE8

Ich blogge dies im Detail

Gültig ab
quelle
10

Das Hinzufügen der richtigen Doctype - Deklaration und die Vermeidung der XML - Prolog sollte ausreichen , um zu vermeiden , Quirks - Modus .

Sicherheitskopie
quelle
Dies ist der richtige Weg, um die Sache zu erreichen, muss sagen. Irgendwie weiß man es nicht mit IE ...
Alfabravo
1
Dies funktioniert nicht mit IE, wenn Sie Ihren Webserver im lokalen Netzwerk ausführen :-(
mjaggard
Dieser Link zum wikipediaMackenmodus hat meinen Tag gerettet. Ich hatte in den letzten 2 Tagen damit zu kämpfen und wusste wirklich nicht, was mit mir im IE passiert. Aber ich frage mich, ob mein IE, wenn ich ihn in den Standardmodus versetzt habe, so aussieht Document Mode: IE7 standards. Wie kann ich es durchsetzenIE9 Standard
Muhammad Hannan
9

Ich weiß, dass diese Frage vor über 2 Jahren gestellt wurde, aber noch hat niemand dies erwähnt.

Die beste Methode ist die Verwendung eines http-Headers

Das Hinzufügen des Meta-Tags zum Kopf funktioniert nicht immer, da der IE den Modus möglicherweise vor dem Lesen festgelegt hat. Der beste Weg, um sicherzustellen, dass der IE immer den Standardmodus verwendet, ist die Verwendung eines benutzerdefinierten http-Headers.

Header:

name: X-UA-Compatible  
value: IE=edge

In einer .NET-Anwendung können Sie dies beispielsweise in die Datei web.config einfügen.

<system.webServer>
    <httpProtocol>
      <customHeaders>
        <add name="X-UA-Compatible" value="IE=edge" />
      </customHeaders>
    </httpProtocol>
</system.webServer>
Daniel Little
quelle
1
Nicht die beste, da MS angibt, dass "Wenn sowohl [Meta als auch Header] dieser Anweisungen gesendet werden, hat die Präferenz des Entwicklers (Metaelement) Vorrang vor der Webservereinstellung (HTTP-Header)." msdn.microsoft.com/en-us/library/ff955275%28v=vs.85%29.aspx
Psychowood
1
Sie müssen jedoch vorsichtig sein, da der IE den X-UA-kompatiblen Wert festlegen kann, bevor Sie Ihr Meta-Tag erreichen. Deshalb ist der Header immer noch der beste Ansatz.
Daniel Little
2

Möglicherweise verursacht der HTML5-Doctype Probleme mit diesen älteren Browsern. Es könnte auch an etwas Funky liegen, das mit dem HTML5-Shiv zusammenhängt.

Sie können versuchen, zu einem der XHTML-Doctypes zu wechseln und Ihr Markup zumindest vorübergehend entsprechend zu ändern. Auf diese Weise können Sie das Problem möglicherweise eingrenzen.

Bricht Ihr Design, wenn diese IEs in den Mackenmodus wechseln? Wenn es Ihr CSS ist, das dazu führt, dass Dinge seltsam angezeigt werden, lohnt es sich möglicherweise, an dem CSS zu arbeiten, damit die Site auch dann gleich aussieht, wenn der Browser den Modus wechselt.

Sicherheitskopie
quelle
Der HTML5-Doctype wurde entwickelt, um alle Browser in den Standardmodus zu versetzen.
mjaggard