Was macht <meta http-equiv = "X-UA-kompatibler" Inhalt = "IE = Rand">?

1437

Was ist der Unterschied, wenn eine Webseite mit beginnt?

<!DOCTYPE html> 
<html> 
  <head> 
    <meta http-equiv="X-UA-Compatible" content="IE=edge"> 

und Wenn die Seite mit beginnt

<!DOCTYPE html> 
<html> 
  <head> 
     <!-- without X-UA-Compatible meta -->

Wenn es keinen Unterschied gibt, kann ich den X-UA-CompatibleMeta-Header einfach ignorieren , da ich nur möchte, dass er in allen IE-Versionen im Standardmodus gerendert wird.

Morgan Cheng
quelle

Antworten:

1703

Oktober 2015 Update

Diese Antwort wurde vor einigen Jahren veröffentlicht und jetzt sollte die Frage wirklich lauten, ob Sie überhaupt in Betracht ziehen sollten, das X-UA-CompatibleTag auf Ihrer Website zu verwenden. mit den Änderungen, die Microsoft an seinen Browsern vorgenommen hat (mehr dazu weiter unten).

Je nachdem, welche Microsoft-Browser Sie unterstützen, müssen Sie das X-UA-CompatibleTag möglicherweise nicht weiter verwenden . Wenn Sie IE9 oder IE8 unterstützen müssen, würde ich die Verwendung des Tags empfehlen. Wenn Sie nur die neuesten Browser (IE11 und / oder Edge) unterstützen, würde ich in Betracht ziehen, dieses Tag insgesamt zu löschen. Wenn Sie Twitter Bootstrap verwenden und Validierungswarnungen entfernen müssen, muss dieses Tag in der angegebenen Reihenfolge angezeigt werden. Zusätzliche Informationen unten:


Mit dem X-UA-CompatibleMeta-Tag können Webautoren auswählen, als welche Version von Internet Explorer die Seite gerendert werden soll. IE11 hat Änderungen an diesen Modi vorgenommen. Siehe den IE11-Hinweis unten. Microsoft Edge , der Browser, der IE11 ersetzt hat, berücksichtigt das X-UA-CompatibleMeta-Tag nur unter bestimmten Umständen. Siehe den Microsoft Edge-Hinweis unten.

Laut Microsoft sollte das X-UA-CompatibleTag bei Verwendung des Tags in Ihrem Dokument so hoch wie möglich sein head:

Wenn Sie das X-UA-kompatible META-Tag verwenden, möchten Sie es so nah wie möglich am oberen Rand des KOPFES der Seite platzieren. Internet Explorer beginnt mit der Interpretation von Markups mit der neuesten Version. Wenn Internet Explorer auf das X-UA-kompatible META-Tag stößt, wird die Engine der angegebenen Version erneut verwendet. Dies ist ein Leistungseinbruch, da der Browser die Analyse des Inhalts stoppen und neu starten muss.

Hier sind Ihre Optionen:

  • "IE = Kante"
  • "IE = 11"
  • "IE = EmulateIE11"
  • "IE = 10"
  • "IE = EmulateIE10"
  • "IE = 9"
  • "IE = EmulateIE9
  • "IE = 8"
  • "IE = EmulateIE8"
  • "IE = 7"
  • "IE = EmulateIE7"
  • "IE = 5"

Um zu verstehen, was die einzelnen Bedeutungen bedeuten, werden von Microsoft folgende Definitionen bereitgestellt:

Internet Explorer unterstützt eine Reihe von Dokumentkompatibilitätsmodi, die verschiedene Funktionen aktivieren und die Anzeige von Inhalten beeinflussen können:

  • Der Edge-Modus weist Internet Explorer an, Inhalte im höchsten verfügbaren Modus anzuzeigen. Mit Internet Explorer 9 entspricht dies dem IE9-Modus. Wenn eine zukünftige Version von Internet Explorer einen höheren Kompatibilitätsmodus unterstützt, werden Seiten, die auf den Kantenmodus eingestellt sind, im höchsten von dieser Version unterstützten Modus angezeigt. Dieselben Seiten werden bei Anzeige mit Internet Explorer 9 weiterhin im IE9-Modus angezeigt. Internet Explorer unterstützt eine Reihe von Dokumentkompatibilitätsmodi, die verschiedene Funktionen aktivieren und die Anzeige von Inhalten beeinflussen können:

  • Der IE11-Modus bietet die höchste verfügbare Unterstützung für etablierte und aufstrebende Industriestandards, einschließlich HTML5, CSS3 und andere.

  • Der IE10-Modus bietet die höchste verfügbare Unterstützung für etablierte und aufstrebende Industriestandards, einschließlich HTML5, CSS3 und andere.

  • Der IE9-Modus bietet die höchste verfügbare Unterstützung für etablierte und aufstrebende Industriestandards, einschließlich HTML5 (Working Draft), W3C Cascading Style Sheets Level 3-Spezifikation (Working Draft), Scalable Vector Graphics (SVG) 1.0-Spezifikation und andere. [Anmerkung des Herausgebers: IE 9 unterstützt keine CSS3-Animationen].

  • Der IE8-Modus unterstützt viele etablierte Standards, einschließlich der W3C Cascading Style Sheets Level 2.1-Spezifikation und der W3C Selectors API. Es bietet auch begrenzte Unterstützung für die W3C Cascading Style Sheets Level 3-Spezifikation (Working Draft) und andere aufkommende Standards.

  • Der IE7-Modus rendert Inhalte so, als ob sie von Internet Explorer 7 im Standardmodus angezeigt würden, unabhängig davon, ob die Seite eine Direktive enthält oder nicht.

  • Der Emulations-IE9-Modus weist Internet Explorer an, anhand der Anweisung zu bestimmen, wie Inhalte gerendert werden sollen. Direktiven im Standardmodus werden im IE9-Modus und Direktiven im Mackenmodus im IE5-Modus angezeigt. Im Gegensatz zum IE9-Modus berücksichtigt der Emulate IE9-Modus die Direktive.

  • Im IE8-Modus emulieren wird Internet Explorer angewiesen, anhand der Anweisung zu bestimmen, wie Inhalte gerendert werden sollen. Direktiven im Standardmodus werden im IE8-Modus und Direktiven im Mackenmodus im IE5-Modus angezeigt. Im Gegensatz zum IE8-Modus berücksichtigt der Emulate IE8-Modus die Direktive.

  • Der Emulate IE7-Modus weist Internet Explorer an, anhand der Anweisung zu bestimmen, wie Inhalte gerendert werden sollen. Direktiven im Standardmodus werden im Standardmodus von Internet Explorer 7 angezeigt, und Direktiven im Mackenmodus werden im IE5-Modus angezeigt. Im Gegensatz zum IE7-Modus berücksichtigt der Emulate IE7-Modus die Direktive. Für viele Websites ist dies der bevorzugte Kompatibilitätsmodus.

  • Der IE5-Modus rendert Inhalte so, als ob sie von Internet Explorer 7 im Mackenmodus angezeigt würden. Dies ist der Darstellung von Inhalten in Microsoft Internet Explorer 5 sehr ähnlich.

IE10 HINWEIS: Ab IE10 verhält sich der Mackenmodus anders als in früheren Versionen des Browsers. In IE9 und früheren Versionen beschränkte der Mackenmodus die Webseite auf die von IE5.5 unterstützten Funktionen. In IE10 entspricht der Mackenmodus den in der HTML5-Spezifikation angegebenen Unterschieden.

Persönlich wähle ich immer das http-equiv="X-UA-Compatible" content="IE=edge"Meta-Tag, da ältere Versionen viele Fehler aufweisen und ich nicht möchte, dass der IE in den "Kompatibilitätsmodus" wechselt und meine Website als IE7 oder IE8 oder 9 anzeigt. Ich bevorzuge immer die neueste Version von IE.

IE11

Von Microsoft :

Ab IE11 ist der Kantenmodus der bevorzugte Dokumentmodus. Es stellt die höchste Unterstützung für moderne Standards dar, die dem Browser zur Verfügung stehen.

Verwenden Sie die HTML5-Dokumenttypdeklaration, um den Kantenmodus zu aktivieren:

<!doctype html>

Der Edge-Modus wurde in Internet Explorer 8 eingeführt und war in jeder nachfolgenden Version verfügbar. Beachten Sie, dass die vom Edge-Modus unterstützten Funktionen auf diejenigen beschränkt sind, die von der spezifischen Version des Browsers unterstützt werden, der den Inhalt rendert.

Ab IE11 sind Dokumentmodi veraltet und sollten nur noch vorübergehend verwendet werden. Stellen Sie sicher, dass Sie Websites aktualisieren, die auf älteren Funktionen und Dokumentmodi basieren, um moderne Standards widerzuspiegeln.

Wenn Sie auf einen bestimmten Dokumentmodus abzielen müssen, damit Ihre Site funktioniert, während Sie sie überarbeiten, um moderne Standards und Funktionen zu unterstützen, beachten Sie, dass Sie eine Übergangsfunktion verwenden, die in zukünftigen Versionen möglicherweise nicht verfügbar ist.

Wenn Sie derzeit den x-ua-kompatiblen Header verwenden, um auf einen Legacy-Dokumentmodus abzuzielen, spiegelt Ihre Site möglicherweise nicht die beste mit IE11 verfügbare Erfahrung wider.

Microsoft Edge (Ersatz für Internet Explorer, der im Lieferumfang von Windows 10 enthalten ist)

Informationen zum X-UA-CompatibleMeta-Tag für die "Edge" -Version des IE. Von Microsoft :

Einführung in den "lebenden" Edge-Dokumentmodus

Wie wir im August 2013 angekündigt haben, werden die Dokumentmodi ab IE11 abgelehnt. Mit unseren neuesten Plattform-Updates ist der Bedarf an älteren Dokumentmodi in erster Linie auf ältere Web-Apps von Enterprise beschränkt. Mit neuen Architekturänderungen werden diese älteren Dokumentmodi von Änderungen im "lebenden" Edge-Modus isoliert, was dazu beiträgt, Kunden, die von diesen Modi abhängig sind, ein viel höheres Maß an Kompatibilität zu garantieren und Verbesserungen bei Edge noch schneller voranzutreiben . Der IE berücksichtigt weiterhin Dokumentmodi, die von Intranetsites, Sites in der Liste der Kompatibilitätsansichten und nur im Enterprise-Modus bereitgestellt werden.

Öffentliche Internetseiten werden mit der neuen Edge-Modus-Plattform gerendert (ohne X-UA-Kompatibilität). Es ist unser Ziel, dass Edge von hier an der "lebende" Dokumentmodus ist und in Zukunft keine weiteren Dokumentmodi eingeführt werden.

Da Microsoft Edge in den meisten Fällen die Dokumentmodi nicht mehr unterstützt, verfügt Microsoft über ein Tool, mit dem Sie Ihre Site scannen können, um zu überprüfen, ob Code vorhanden ist, der nicht mit Edge kompatibel ist.

Chrome = 1 Info für IE

Es gibt auch chrome=1die Möglichkeit, diese zusammen mit einer der oben genannten Optionen zu verwenden oder zu verwenden : <meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1">. chrome=1ist für Googles Chrome Frame, der wie folgt definiert ist:

Google Chrome Frame ist ein Open Source-Browser-Plug-In. Benutzer, auf denen das Plug-In installiert ist, haben Zugriff auf die offenen Webtechnologien und die schnelle JavaScript-Engine von Google Chrome, wenn sie Seiten im Browser öffnen.

Google Chrome Frame verbessert nahtlos Ihre Browser-Erfahrung in Internet Explorer. Es zeigt Websites mit Google Chrome Frame-Unterstützung mithilfe der Rendering-Technologie von Google Chrome an und bietet Ihnen Zugriff auf die neuesten HTML5-Funktionen sowie auf die Leistungs- und Sicherheitsfunktionen von Google Chrome, ohne die übliche Browsernutzung zu beeinträchtigen.

Wenn Google Chrome Frame installiert ist, wird das Web nur besser, ohne dass Sie darüber nachdenken müssen.

Damit dieses Plug-In funktioniert, müssen Sie es chrome=1im X-UA-CompatibleMeta-Tag verwenden.

Weitere Informationen zu Chrome Frame finden Sie hier .

Hinweis: Google Chrome Frame funktioniert nur für IE6 bis IE9 und wurde am 25. Februar 2014 eingestellt. Weitere Informationen finden Sie hier . Danke an @mck für den Link.

Validierung:

HTML5 :

Die Seite wird nur bei Verwendung mit dem W3-Validator validiert <meta http-equiv="X-UA-Compatible" content="IE=Edge">. Bei anderen Werten wird der Fehler ausgegeben: A meta element with an http-equiv attribute whose value is X-UA-Compatible must have a content attribute with the value IE=edge.Mit anderen Worten, wenn Sie ihn haben IE=edge,chrome=1, wird er nicht validiert. Ich ignoriere diesen Fehler vollständig, da moderne Browser diese Codezeile einfach ignorieren.

Wenn Sie einen vollständig gültigen Code haben müssen, sollten Sie dies auf Serverebene tun, indem Sie den HTTP-Header festlegen. Microsoft sagt: If both of these instructions are sent (meta and HTTP), the developer's preference (meta element) takes precedence over the web server setting (HTTP header). Weitere Informationen zum Festlegen eines HTTP-Headers finden Sie in der Antwort von olibre oder in der Antwort von bitinn .

XHTML

Es gibt kein Problem mit der Validierung bei der Verwendung <meta http-equiv="X-UA-Compatible" content="IE=Edge" />, solange das Tag ordnungsgemäß geschlossen ist (dh />vs >).

Twitter Bootstrap

Dieses Tag wird vom Bootstrap-Team seit mindestens 2014 dringend empfohlen, und Bootlint , der vom twbs-Team verfasste Linter, gibt weiterhin eine Warnung aus, wenn das Tag weggelassen wird. Der Linter unterscheidet zwischen Warnungen und Fehlern, und als solche kann die Schwere des Weglassens dieses Tags als geringfügig angesehen werden.


Weitere Informationen finden Sie auf der X-UA-CompatibleMicrosoft- Website zum Definieren der Dokumentkompatibilität .

Weitere Informationen zur Unterstützung des IE finden Sie unter caniuse.com .

Weitere Informationen zu den Twitter Bootstrap-Anforderungen finden Sie auf der Wiki-Seite des Bootlint-Projekts .

L84
quelle
40
Was würde passieren, wenn ich nicht "X-UA-kompatibel" in den Headern habe?
Morgan Cheng
45
Grundsätzlich passiert, wenn Sie das X-UA-kompatible Gerät haben, das dem IE mitteilt, wie er sich in Bezug auf den von Ihnen festgelegten Wert (IE = Kante usw.) verhalten soll, wenn er nicht vorhanden ist. Der IE zeigt der Site, wie sie es für am besten hält . Dies kann der Kompatibilitätsmodus oder die neueste Version des IE sein. Was auch immer Microsoft / IE für am besten hält. Sinn ergeben?
L84
2
@TravisJ - Nach meinem Verständnis bedeutet der höchste verfügbare Modus im Grunde, dass IE 8 bis zu IE8-Modi unterstützen kann, IE9 IE9-Modi unterstützen kann und so weiter. Ich habe einige Definitionen für jeden von Microsoft bereitgestellten Modus hinzugefügt.
L84
10
@AdrienBe - da stimme ich voll und ganz zu! Bisher war IE 10 das Beste für mich, aber ich verachte jede andere Version. Einmal hatte ich ein Seiten-Setup mit einigen Effekten von etwa 200-300 HTML-Zeilen und etwa 20 Minuten Codierung. Um den IE zum Laufen zu bringen, musste ich weitere 1.000 Codezeilen (meistens Javascript von Drittanbietern) und 2-3 Stunden Arbeit hinzufügen! Ich hasse IE =>
L84
9
Google Chrome Frame wird im Januar 2014 eingestellt: blog.chromium.org/2013/06/retiring-chrome-frame.html
mck
339

Verwenden Sie content="IE=edge,chrome=1"   Andere X-UA-CompatibleModi überspringen

<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
                                   -------------------------- 
  • Kein Kompatibilitätssymbol
    In der IE9-Adressleiste wird die Schaltfläche Kompatibilitätsansicht nicht angezeigt,
    und auf der Seite wird auch kein Durcheinander von fehl am Platz befindlichen Menüs, Bildern und Textfeldern angezeigt.

  • Funktionen
    Dieses Meta-Tag ist erforderlich, um es javascript::JSON.parse()auf IE8 zu aktivieren
    (auch wenn <!DOCTYPE html>es vorhanden ist).

  • Korrektheit Das
    Rendern / Ausführen von modernem HTML / CSS / JavaScript ist gültiger (besser).

  • Leistung
    Die Trident-Rendering-Engine sollte im Edge- Modus schneller ausgeführt werden.


Verwendungszweck

In Ihrem HTML

<!DOCTYPE html> 
<html> 
  <head>
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">

Oder besser in der Konfiguration Ihres Webservers:
(siehe auch die Antwort des RiaD )

  • Apache wie von pixeline vorgeschlagen

    <IfModule mod_setenvif.c>
      <IfModule mod_headers.c>
        BrowserMatch MSIE ie
        Header set X-UA-Compatible "IE=Edge,chrome=1" env=ie
      </IfModule>
    </IfModule>
    <IfModule mod_headers.c>
      Header append Vary User-Agent
    </IfModule>
    
  • Nginx wie von Stef Pause vorgeschlagen

    server {
      #...
      add_header X-UA-Compatible "IE=Edge,chrome=1";
    }
    
  • Lack - Proxy wie vorgeschlagen von Lucas Riutzel

    sub vcl_deliver {
      if( resp.http.Content-Type ~ "text/html" ) {
        set resp.http.X-UA-Compatible = "IE=edge,chrome=1";
      }
    }
    
  • IIS (seit v7)

    <configuration>
      <system.webServer>
         <httpProtocol>
            <customHeaders>
               <add name="X-UA-Compatible" value="IE=edge,chrome=1" />
            </customHeaders>
         </httpProtocol>
      </system.webServer>
    </configuration>
    

Microsoft empfiehlt den Edge-Modus seit IE11

Wie Lynda bemerkt (siehe Kommentare), empfehlen die Änderungen der Kompatibilität in IE11 den Edge-Modus :

Ab IE11 ist der Kantenmodus der bevorzugte Dokumentmodus. Es stellt die höchste Unterstützung für moderne Standards dar, die dem Browser zur Verfügung stehen.

Die Position von Microsoft war jedoch nicht klar. Eine andere MSDN-Seite hat den Edge-Modus nicht empfohlen :

Da der Edge-Modus das Öffnen aller Seiten im Standardmodus erzwingt, unabhängig von der Version von Internet Explorer, könnten Sie versucht sein, dies für alle mit Internet Explorer angezeigten Seiten zu verwenden. Tun Sie dies nicht, da der X-UA-CompatibleHeader nur ab Windows Internet Explorer 8 unterstützt wird.

Stattdessen empfahl Microsoft Folgendes <!DOCTYPE html>:

Wenn Sie möchten, dass alle unterstützten Versionen von Internet Explorer Ihre Seiten im Standardmodus öffnen, verwenden Sie die HTML5-Dokumenttypdeklaration [...]

Wie Ricardo (in den Kommentaren unten) erklärt, kann jeder DOCTYPE (HTML4, XHTML1 ...) verwendet werden, um den Standardmodus auszulösen, nicht nur der DOCTYPE von HTML5. Das Wichtigste ist, immer einen DOKTYP auf der Seite zu haben.

Clara Onager hat sogar in einer älteren Version von Specifying Legacy Document Modi Folgendes bemerkt :

Der Kantenmodus dient nur zu Testzwecken. Verwenden Sie es nicht in einer Produktionsumgebung.

Es ist so verwirrend, dass Usman Y dachte, Clara Onager spreche über:

Das [...] Beispiel dient nur zur Veranschaulichung. Verwenden Sie es nicht in einer Produktionsumgebung.

<meta http-equiv="X-UA-Compatible" content="IE=7,9,10" >

Nun ... Im Rest dieser Antwort gebe ich weitere Erklärungen, warum die Verwendung content="IE=edge,chrome=1"in der Produktion eine gute Praxis ist.


Geschichte

Für viele Jahre (2000 bis 2008) betrug der IE-Marktanteil mehr als 80% . Und IE v6 wurde als De-facto- Standard angesehen (80% bis 97% Marktanteil in den Jahren 2003 , 2004, 2005 und 2006 nur für IE6, mehr Marktanteil bei allen IE-Versionen).

Als IE6 wurde nicht respektiert Web - Standards , Entwickler hatten ihre Website zu testen IE6. Diese Situation war für Microsoft (MS) großartig, da Webentwickler MS-Produkte kaufen mussten (z. B. kann IE nicht ohne den Kauf von Windows verwendet werden), und es war rentabler, nicht konform zu bleiben (dh Microsoft wollte der Standard ohne andere werden Firmen).

Daher waren viele, viele Websites nur IE6-kompatibel, und da IE nicht mit dem Webstandard kompatibel war, wurden alle diese Websites in standardkonformen Browsern nicht gut gerendert. Schlimmer noch, viele Websites benötigten nur IE .

Zu diesem Zeitpunkt begann Mozilla jedoch mit der Entwicklung von Firefox, wobei alle Webstandards so weit wie möglich berücksichtigt wurden (andere Browser wurden implementiert, um Seiten wie im IE6 zu rendern). Da immer mehr Webentwickler die neuen Webstandardfunktionen nutzen wollten, wurden immer mehr Websites von Firefox stärker unterstützt als vom Internet Explorer.

Als der IE-Marktanteil abnahm, erkannte MS, dass es keine gute Idee war, den Standard inkompatibel zu halten. Daher begann MS mit der Veröffentlichung einer neuen IE-Version (IE8 / IE9 / IE10), die immer mehr den Webstandards entspricht.


Das Web-inkompatible Problem

Das Problem sind jedoch alle für IE6 entwickelten Websites: Microsoft konnte keine neuen IE-Versionen veröffentlichen, die mit diesen alten, von IE6 entworfenen Websites nicht kompatibel sind. Anstatt die IE-Version abzuleiten, für die eine Website entworfen wurde, forderte MS die Entwickler auf, zusätzliche Daten ( X-UA-Compatible) auf ihren Seiten hinzuzufügen .

IE6 wird 2016 noch verwendet

Heutzutage wird IE6 immer noch verwendet (0,7% im Jahr 2016) (4,5% im Januar 2014), und einige Internet-Websites sind immer noch nur IE6-konform. Einige Intranet-Websites / -Anwendungen werden mit IE6 getestet. Einige Intranet-Websites sind nur unter IE6 zu 100% funktionsfähig. Diese Unternehmen / Abteilungen ziehen es vor, die Migrationskosten zu verschieben: andere Prioritäten, niemand weiß mehr, wie die Website / Anwendung implementiert wurde, der Eigentümer der alten Website / Anwendung ist bankrott gegangen ...

China macht 2013 50% der IE6-Nutzung aus, kann sich jedoch in den nächsten Jahren ändern, wenn die chinesische Linux-Distribution ausgestrahlt wird .

Seien Sie zuversichtlich mit Ihren Web-Fähigkeiten

Wenn Sie den Webstandard respektieren, können Sie ihn einfach immer verwenden http-equiv="X-UA-Compatible" content="IE=edge,chrome=1". Um die Kompatibilität mit alten Browsern zu gewährleisten, vermeiden Sie einfach die Verwendung der neuesten Webfunktionen: Verwenden Sie die Teilmenge, die vom ältesten Browser unterstützt wird, den Sie unterstützen möchten. Wenn Sie noch weiter gehen möchten, können Sie Konzepte wie Graceful Degradation , Progressive Enhancement und Unobtrusive JavaScript übernehmen . (Vielleicht lesen Sie auch gerne Was sollte ein Webentwickler beachten? )

Kümmern Sie sich nicht um das beste Rendern der IE-Version: Dies ist nicht Ihre Aufgabe, da Browser den Webstandards entsprechen müssen. Wenn Ihre Website standardkonform ist und mäßig neueste Funktionen verwendet, müssen Browser daher mit Ihrer Website kompatibel sein .

Da es viele Kampagnen gibt, um IE6 zu töten ( IE6 nicht mehr , MS-Kampagne ), können Sie heutzutage vermeiden, Zeit mit IE-Tests zu verschwenden!

Persönliche IE6-Erfahrung

In den Jahren 2009-2012 arbeitete ich für ein Unternehmen, das IE6 als offiziellen Einzelbrowser verwendete . Ich musste eine Intranet-Website nur für IE6 implementieren. Ich habe mich entschieden, den Webstandard zu respektieren, aber die IE6-fähige Teilmenge (HTML / CSS / JS) zu verwenden.

Es war schwer, aber als das Unternehmen auf IE8 umstieg, war die Website immer noch gut gerendert, da ich Firefox und Firebug verwendet hatte , um die Kompatibilität mit dem Webstandard zu überprüfen;)

olibre
quelle
2
Der Edge-Modus dient nur zu Testzwecken. Verwenden Sie es nicht in einer Produktionsumgebung. ' Siehe msdn.microsoft.com/en-us/library/jj676915(v=vs.85).aspx
Carl Onager
5
Bitte @ClaraOnager, nehmen Sie sich etwas Zeit, um zu erklären, was in meiner Antwort falsch ist (aus Ihrer Sicht). Auch wenn MS die Verwendung des Edge-Modus in der Produktionsumgebung nicht empfiehlt , gibt es gute Gründe, ihn in der Produktionsumgebung zu verwenden. Es ist wichtig, unsere Best Practices technisch zu klären. Ich teile gerne mein Wissen und meine Erfahrungen. Ich hoffe du auch. Wir können uns gemeinsam verbessern;) Cheers
olibre
2
Hallo @Ricardo, ich stimme dir zu. Microsoft sagt "Wenn alle unterstützten Versionen von Internet Explorer Ihre Seiten im Standardmodus öffnen sollen, verwenden Sie HTML5 [...]" im Abschnitt Grundlegendes zu älteren Dokumentmodi (siehe Tipp ). Vielleicht ist meine Erklärung unklar ... Vielleicht habe ich etwas falsch verstanden ... Ich habe meinen Text geändert ... Was denkst du über meine Änderungen? ist es ok für dich? Was raten Sie, um meine Antwort zu ändern / zu verbessern? Vielen Dank für Ihre Rückmeldung. Prost ;-)
Olibre
5
@ClaraOnager ... in Ihrer ersten Antwort zeigen Sie auf der Referenzseite falsch. MS sagt, dass es in der Produktionsumgebung nicht verwendet werden soll für: <meta http-equiv = "X-UA-kompatibel" content = "IE = 7, 9,10 "> nicht die anderen Edge-Dinge.
Usman Younas
3
Informationen zum Edge-Modus in der Produktionsumgebung. Von Microsoft:Starting with IE11, edge mode is the preferred document mode; it represents the highest support for modern standards available to the browser.
L84
58

Der Unterschied besteht darin, dass die Einstellungen für die Kompatibilitätsansicht des DOCTYPEIE Vorrang haben , wenn Sie nur die angeben . Standardmäßig zwingen diese Einstellungen alle Intranetsites unabhängig davon in die Kompatibilitätsansicht . Es gibt auch ein Kontrollkästchen, mit dem Sie die Kompatibilitätsansicht für alle Websites verwenden können, unabhängig davon .DOCTYPEDOCTYPE

Dialogfeld "Einstellungen für die IE-Kompatibilitätsansicht"

X-UA-CompatibleÜberschreibt die Einstellungen für die Kompatibilitätsansicht, sodass die Seite unabhängig von den Browsereinstellungen im Standardmodus gerendert wird. Dies erzwingt den Standardmodus für:

  • Intranetseiten
  • Externe Webseiten, wenn der Computeradministrator standardmäßig "Alle Websites in der Kompatibilitätsansicht anzeigen" ausgewählt hat - denken Sie an große Unternehmen, Regierungen und Universitäten
  • wenn Sie ungewollt in der Microsoft-Kompatibilitätsansichtsliste landen
  • Fälle, in denen Benutzer Ihre Website manuell zur Liste in den Einstellungen für die Kompatibilitätsansicht hinzugefügt haben

DOCTYPEallein kann das nicht; In diesen Fällen gelangen Sie unabhängig davon in einen der Kompatibilitätsansichtsmodi DOCTYPE.

Wenn sowohl das metaTag als auch der HTTP-Header angegeben sind, hat das metaTag Vorrang.

Diese Antwort basiert auf der Prüfung der vollständigen Regeln für die Entscheidung über den Dokumentmodus in IE8 , IE9 und IE10 . Beachten Sie, dass das Betrachten von der DOCTYPEallerletzte Fallback für die Entscheidung über den Dokumentmodus ist.

andrewdotn
quelle
1
Im Intranetszenario wird IE10 standardmäßig im Kompatibilitätsmodus gerendert. Siehe stackoverflow.com/questions/13284083/…. Dieses Tag ist für das Internet nicht standardmäßig erforderlich, wird jedoch (standardmäßig) bei Verwendung von myintenralserver / myapp benötigt . Ich wollte diesen Kommentar hinzufügen, da der Unterschied zwischen Internet und Intranet nur aus dem Text im Screenshot hervorgeht, nicht aus dem Text der Antworten auf der Seite.
Yzorg
Du hast recht, ich hätte das klarer sagen sollen. Ich habe den Beitrag umgeschrieben. Lassen Sie mich wissen, ob ich noch etwas ansprechen sollte. Vielen Dank!
Andrewdotn
Vielen Dank! Diese Antwort ist viel klarer als andere Antworten in Bezug auf Intranetseiten. Andere Antworten beziehen sich auf technische Details, warum und wie. Ich hasse MS IE. Auch gutes Schreiben: Ein Absatz macht deutlich, warum wir das Meta-Tag benötigen. Bravo
Aniket Inge
3
Ich wünschte, ich könnte diese Antwort hundertmal positiv bewerten. Lebensrettender Screen Grab genau dort. Blutdrucksenkung während ich dies
tippe
Awesome awesome awesome! Vielen Dank für diese Antwort.
Seanosapien
25

Verwenden Sie diese Option, um den IE zu zwingen, diese lästige Browserkompatibilitätsschaltfläche in der Adressleiste auszublenden:

<meta http-equiv="X-UA-Compatible" content="IE=edge" />
George Filippakos
quelle
1
Der Edge-Modus dient nur zu Testzwecken. Verwenden Sie es nicht in einer Produktionsumgebung. ' Siehe msdn.microsoft.com/en-us/library/jj676915(v=vs.85).aspx
Carl Onager
4
Aus gutem Grund verwende ich <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">die chrome=1Direktive, damit IE6-, 7- und 8-Benutzer aufgefordert werden, Chrome Frame zu installieren / verwenden . Sogar HTML5 Boilerplate verwendet es.
Ricardo Zea
10
@ClaraOnager Obwohl Microsoft es sagt, heißt das nicht unbedingt, dass sie Recht haben. Ich habe <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">seit dem Tag verwendet, an dem es überhaupt ohne Probleme herauskam. Tatsächlich habe ich meinem Team und mir bereits Hunderte von Kopfschmerzen erspart, indem ich den IE der Benutzer dazu gebracht habe, die neueste Engine zum Rendern der von uns erstellten Seiten zu verwenden. Im Gegensatz zu Ihnen und Microsoft empfehle ich jedem, das oben genannte Meta-Tag jedes Mal zu verwenden . Solange IE noch verfügbar ist, werden wir "gezwungen" sein, dieses Meta-Tag zu verwenden: p
Ricardo Zea
Dies hat sich mit IE11 geändert. Diese Version hat nach offiziellen Maßstäben einen dramatischen Schritt in die Welt der Browser getan. Es ist bis zum Äußersten gegangen, sich nicht einmal als Internet Explorer zu identifizieren! Jetzt heißt es "Netscape" und enthält nichts in den Browserinformationen, um die wahre Identität preiszugeben. Wenn ab dieser Version immer noch Macken im IE-Browser auftreten, müssen Sie diese durch Festlegen in IE10 erzwingen <meta http-equiv="X-UA-Compatible" content="IE=10">. Dann meldet es sich als Microsoft Internet Explorer.
Ehrfurcht
Wenn jemand mir helfen kann, steht er vor dem gleichen Problem: stackoverflow.com/questions/22013880/…
dsi
25

Da ich der markierten Antwort keinen Kommentar hinzufügen kann, werde ich dies hier posten.

Zusätzlich zur richtigen Antwort können Sie diese tatsächlich validieren lassen. Da dieses Meta-Tag nur für den IE bestimmt ist, müssen Sie lediglich eine IE-Bedingung hinzufügen.

<!--[if IE]>
    <meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1">
<![endif]-->

Dies ist wie das Hinzufügen einer anderen bedingten IE-Anweisung und funktioniert nur für den IE. Es sind keine anderen Browser betroffen.

EMurph78
quelle
4
Bedingte Kommentare sollten nicht verwendet werden, AUSSER um HTML für <= IE9 als Ziel festzulegen. (Dies war auch dann wahr, als diese Antwort geschrieben wurde)
EKW
18

Ich denke, dieses Diagramm von Microsoft erklärt alles. Um dem IE mitzuteilen, wie der Inhalt gerendert werden soll, muss! DOCTYPE mit dem X-UA-kompatiblen Meta-Tag arbeiten. ! DOCTYPE selbst hat keinen Einfluss auf das Ändern des IE-Dokumentmodus.

Geben Sie hier die Bildbeschreibung ein

http://ie.microsoft.com/testdrive/ieblog/2010/Mar/02_HowIE8DeterminesDocumentMode_3.png

James Tsai
quelle
3
Hier ist eine aktualisierte Version, die IE9 enthält. OMG ... ie.microsoft.com/testdrive/ieblog/2010/Jun/...
Spiralis
3
Und dieser beinhaltet IE10: msdn.microsoft.com/en-us/library/ff406036%28v=vs.85%29.aspx Die verschiedenen Kapiteln jeweils eine eigene Ablaufpläne haben ...
Spiralis
Sie haben dieses Flussdiagramm falsch verstanden. In Abwesenheit von X-UA-Compatible sucht der Browser nach <! DOCTYPE>. Wenn es eines findet, wird es im Standardmodus (auch bekannt als "EmulateIE8") gerendert. Wenn dies nicht der Fall ist, kehrt es in den "Quirks-Modus" zurück.
Chuck Le Butt
Vielen Dank, dass Sie das Bild auf Stackoverflow hochgeladen haben. Die ursprünglichen Links zu Microsoft sind alle tot.
Elmue
12

Der Vollständigkeit halber müssen Sie es nicht zu Ihrem HTML-Code hinzufügen (was in HTML5 als http-äquiv unbekannt ist).

Tun Sie dies und schauen Sie niemals zurück (erstes Beispiel für Apache , zweites für Nginx )

Header set X-UA-Compatible "IE=Edge,chrome=1"

add_header X-UA-Compatible "IE=Edge,chrome=1";
Bitinn
quelle
2
@HueiTan - Ich denke, das Poster sagt, dass beim Versuch, die Seite mit dem W3-Validator zu validieren , ein Fehler ausgegeben wird: Bad value X-UA-Compatible for attribute http-equiv on element meta.- Dies bedeutet nicht, dass es nicht funktioniert. Es ist einfach kein gültiger Code.
L84
10

Nur ein Satz: Weisen Sie Internet Explorer an, die neueste Rendering-Engine zu verwenden

<meta http-equiv="x-ua-compatible" content="ie=edge">
Bipon Biswas
quelle
7
<meta http-equiv="X-UA-Compatible" content="IE=Edge">

Stellen Sie Folgendes sicher, damit diese Zeile wie erwartet funktioniert:

  1. Es ist das erste Element direkt danach <head>
  2. Vor dem Meta-Tag werden keine bedingten Kommentare verwendet, z. B. für das <html>Element

Andernfalls ignorieren einige IE-Versionen dies einfach.

AKTUALISIEREN

Diese beiden Regeln sind vereinfacht, aber leicht zu merken und zu überprüfen. Obwohl in MSDN-Dokumenten angegeben ist, dass Sie Titel- und andere Meta-Tags vor dieses setzen können, würde ich dies nicht empfehlen.

Wie funktioniert es mit bedingten Kommentaren?

Interessanter Artikel über die Reihenfolge der Elemente im Kopf. (blogs.msdn.com, für IE)

REFERENZ

Aus der MSDN-Dokumentation :

Das X-UA-Compatible[...] muss in der Kopfzeile der Webseite (Abschnitt HEAD) vor allen anderen Elementen außer dem Titelelement und anderen Metaelementen erscheinen.

ToniTornado
quelle
5

wenn Sie Ihre Website im selben Netzwerk wie der Server verwenden mag IE wechseln compability Modus trotz DOCTYPE.
Durch Hinzufügen wird dieses unerwünschte Verhalten meta http-equiv="X-UA-Compatible" content="IE=Edge" deaktiviert .

Łukasz Jakóbiec
quelle
Ein anderes Wort für "dasselbe Netzwerk wie der Server" ist Intranet. Daher ist IE10 standardmäßig für alle Intranetsites defekt. Siehe Screenshot in der Antwort von @AndrewNeitsch.
Yzorg
3

Dies ist buchstäblich 1 Google-Abfrage entfernt , aber hier geht's:

http://msdn.microsoft.com/en-us/library/jj676915(v=vs.85).aspx

Grundlegendes zu älteren Dokumentmodi

Verwenden Sie den folgenden Wert, um die Webseite im Edge-Modus anzuzeigen, dem von Internet Explorer unterstützten Modus mit den höchsten Standards von Internet Explorer 6 bis IE11.

<meta http-equiv="x-ua-compatible" content="IE=edge"

Beachten Sie, dass dies funktional der Verwendung des HTML5-Doctype entspricht. Der Internet Explorer wird in den am höchsten unterstützten Dokumentmodus versetzt. Edge most ist am nützlichsten für regelmäßig gewartete Websites, die routinemäßig auf Interoperabilität zwischen mehreren Browsern getestet werden, einschließlich Internet Explorer.

Hinweis Ab IE11 wird der Kantenmodus als bevorzugter Dokumentmodus angesehen. (In früheren Versionen wurde es als experimentell angesehen.) Weitere Informationen finden Sie unter Dokumentmodi sind veraltet. Ab Windows Internet Explorer 8 verwendeten einige Webentwickler das Metaelement Edge-Modus, um die Schaltfläche Kompatibilitätsansicht in der Adressleiste auszublenden. Ab IE11 ist dies nicht mehr erforderlich, da die Schaltfläche aus der Adressleiste entfernt wurde. Da alle Seiten unabhängig von der Version von Internet Explorer im Standardmodus geöffnet werden müssen, könnten Sie versucht sein, den Edge-Modus für alle mit Internet Explorer angezeigten Seiten zu verwenden. Tun Sie dies nicht, da der X-UA-kompatible Header nur ab Internet Explorer 8 unterstützt wird.

Tipp Wenn alle unterstützten Versionen von Internet Explorer Ihre Seiten im Standardmodus öffnen sollen, verwenden Sie die HTML5-Dokumenttypdeklaration, wie im vorherigen Beispiel gezeigt.

Ebenfalls unter den Suchergebnissen ist:

Joe Mike
quelle
2

2.1.3.5 X-UA-Kompatibilitäts-Meta-Tag und HTTP-Antwortheader

Diese Funktionalität wird in keiner Version von Microsoft Edge implementiert.

<meta http-equiv="X-UA-Compatible" content="IE=9; IE=8; IE=7; IE=EDGE" />

Siehe https://msdn.microsoft.com/en-us/library/ff955275(v=vs.85).aspx

Ja, ich weiß, dass ich zu spät zur Party komme, aber ich hatte nur einige Probleme und Diskussionen, und am Ende ließ mein Chef mich das X-UA-CompatibleTag aus allen Dokumenten entfernen, an denen ich gearbeitet habe.

Wenn diese Informationen nicht mehr aktuell oder nicht mehr relevant sind, korrigieren Sie mich bitte.

Shawn Spencer
quelle