Ich bin ziemlich verwirrt. Ich sollte einstellen können
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
und IE8 und IE9 sollten die Seite mit der neuesten Rendering-Engine rendern. Ich habe es jedoch gerade getestet, und wenn der Kompatibilitätsmodus an anderer Stelle auf unserer Website aktiviert ist, bleibt er für unsere Seite aktiviert , auch wenn wir ihn dazu zwingen sollten, dies nicht zu tun.
Wie sollen Sie sicherstellen, dass der IE den Kompatibilitätsmodus nicht verwendet (auch nicht in einem Intranet)?
FWIW, ich verwende die HTML5 DocType-Deklaration ( <!doctype html>
).
Hier sind die ersten Zeilen der Seite:
<!doctype html>
<!--[if lt IE 7 ]> <html lang="en" class="innerpage no-js ie6"> <![endif]-->
<!--[if IE 7 ]> <html lang="en" class="innerpage no-js ie7"> <![endif]-->
<!--[if IE 8 ]> <html lang="en" class="innerpage no-js ie8"> <![endif]-->
<!--[if (gte IE 9)|!(IE)]><!-->
<html lang="en" class="innerpage no-js">
<!--<![endif]-->
<head>
<meta charset="ISO-8859-1" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
BEARBEITEN: Ich habe gerade erfahren, dass die Standardeinstellung in IE8 die Verwendung des IE7-Kompatibilitätsmodus für Intranetsites ist. Würde dies das X-UA-kompatible Meta-Tag überschreiben?
Antworten:
Wenn Sie die Einstellungen für die Kompatibilitätsansicht des IE für Intranetsites überschreiben müssen, können Sie dies in der web.config (IIS7) oder über die benutzerdefinierten HTTP-Header in den Eigenschaften der Website (IIS6) tun und dort X-UA-Compatible festlegen. Das Meta-Tag überschreibt nicht die Intranet-Einstellung des IE in den Einstellungen für die Kompatibilitätsansicht. Wenn Sie es jedoch auf dem Hosting-Server festlegen, wird die Kompatibilität überschrieben.
Beispiel für web.config in IIS7:
Bearbeiten : Ich habe den
clear
Code kurz vor dem entferntadd
; Es war ein unnötiges Versehen beim Kopieren und Einfügen. Guter Fang, Kommentatoren!quelle
<clear />
? Welche benutzerdefinierten Header werden dadurch gelöscht?<urlCompression...>
Regel zumindest für mich zu entfernen . Diese Regel macht gzipping, was ich will, also habe ich das klar auskommentiert. Jede weitere Information wäre schön.<?php header('X-UA-Compatible: IE=edge'); ?>
Die serverseitige Lösung wird empfohlen, wie @TimmyFranks in seiner Antwort vorgeschlagen hat. Wenn Sie die
X-UA-Compatible
Regel jedoch auf Seitenebene implementieren müssen , lesen Sie bitte die folgenden Tipps, um von den Erfahrungen derjenigen zu profitieren, die bereits verbrannt wurdenDas
X-UA-Compatible
Meta-Tag muss direkt nach dem Titel im<head>
Element erscheinen. Es können keine anderen Meta-Tags, CSS-Links und JS-Skripte aufgerufen werden.Wenn auf der Seite bedingte Kommentare vorhanden sind (z. B. in der
<html>
), müssen diese nach dem<head>
.Das Team von Html5BoilerPlate hat über diesen Fehler geschrieben - http://h5bp.com/i/378. Es gibt verschiedene Lösungen.
In Bezug auf die Intranet- und Kompatibilitätsansicht gibt es Einstellungen, wenn Sie zu Extras> Einstellungen für die Kompatibilitätsansicht gehen.
quelle
X-UA-Compatible
sollte so früh wie möglich erscheinen, wahrscheinlich danachcharset
. Ich denke nicht, dass es wahr ist, dass es "direkt nach dem Titel erscheinen muss".X-UA-Compatible
Meta - Tag kann nach erscheinentitle
,base
und anderen Meta - Tags , ohne seine Wirkung zu verlieren. Das habe ich in IE8 getestet. Es können jedoch keine bedingten Kommentare davor gestellt werden.Beachten Sie, dass Sie den folgenden Code verwenden können, um das Problem zu beheben, wenn Sie es über PHP bereitstellen.
quelle
<!--[if lt IE 7 ]> <html>...
Bedarf eine riesige Site erstellt wird ! DANKE! Du bist von Gott gesandt !!Wie sich herausstellt, hat dies mit der "intelligenten" Wahl von Microsoft zu tun, mit der alle Intranetsites in den Kompatibilitätsmodus versetzt werden, auch wenn dies eingestellt
X-UA-Compatible
istIE=edge
.quelle
Ich habe auch das gleiche Problem mit dem IE9-Rendering in IE7-Dokumentstandards für den lokalen Host. Ich habe viele Tags für bedingte Kommentare ausprobiert, aber erfolglos. Am Ende habe ich einfach alle bedingten Tags entfernt und direkt nach dem Kopf wie unten ein Meta-Tag hinzugefügt, und es hat wie ein Zauber funktioniert.
Ich hoffe es hilft
quelle
Selbst wenn Sie die Option "Intranetsites in der Kompatibilitätsansicht anzeigen" deaktiviert haben und X-UA-kompatibel in Ihren Antwortheadern haben, gibt es einen anderen Grund, warum Ihr Browser möglicherweise sowieso standardmäßig "Kompatibilitätsansicht" verwendet - Ihre Gruppenrichtlinie. Suchen Sie auf Ihrer Konsole nach der folgenden Meldung:
Wobei xxx.xxx die Domain für Ihre Site ist (dh test.com). Wenn Sie dies sehen, wird die Gruppenrichtlinie für Ihre Domain so festgelegt, dass jede Site, die auf test.com endet, automatisch im Kompatibilitätsmodus gerendert wird, unabhängig von Doctype, Headern usw.
Weitere Informationen finden Sie unter folgendem Link (Erläuterungen zu den HTML-Codes): http://msdn.microsoft.com/en-us/library/ie/hh180764(v=vs.85).aspx
quelle
Wie der NEOSWF oben ausführt, verhindern die bedingten Kommentare von Paul Irish, dass das Meta-Tag Auswirkungen hat.
Hier gibt es mehrere Korrekturen ( http://nicolasgallagher.com/better-conditional-classnames-for-hack-free-css/ )
Diese beinhalten:
Hinzufügen von zwei HTML-Klassen, Verwenden von Server-Headern und Hinzufügen eines bedingten Kommentars über dem Doctype.
Bei meinem letzten Projekt habe ich beschlossen, die bedingten Kommentare von Paul Irish zu entfernen. Ich mochte die Idee nicht, etwas vor dem HTML-Code hinzuzufügen, ohne vorher VIELE Tests durchzuführen, und es ist schön zu sehen, was eingestellt wurde, indem man sich nur den HTML-Code ansieht.
Am Ende habe ich ein Div direkt hinter dem Körper umgeben und bedingte Kommentare verwendet, z
Ich hätte dies rund um den Körper tun können, aber es ist schwieriger mit CMSs wie Wordpress.
Offensichtlich ist es ein weiterer DIV im Markup, aber nur für ältere Browser.
Ich denke, es könnte eine projektbasierte Entscheidung sein.
Ich habe auch etwas über das Zeichensatz-Meta-Tag gelesen, das in den ersten 1024 Bytes kommen muss, damit dies sichergestellt ist.
Manchmal sind die einfachsten und am einfachsten zu lesenden Ideen die besten und es lohnt sich auf jeden Fall, darüber nachzudenken! Vielen Dank an den 6. Kommentar zum obigen Link für diesen Hinweis.
quelle
X-UA-Compatible
überschreibt nur den Dokumentmodus, nicht den Browsermodus und funktioniert nicht für alle Intranetsites. In diesem Fall besteht die beste Lösung darin, "Intranetsites in der Kompatibilitätsansicht anzeigen" zu deaktivieren und eine Gruppenrichtlinieneinstellung festzulegen , um anzugeben, welche Intranetsites den Kompatibilitätsmodus benötigen.quelle
Ich habe meiner htaccess-Datei Folgendes hinzugefügt, was den Trick getan hat:
quelle
Darüber hinaus muss X-UA-kompatibel das erste Meta-Tag im Kopfbereich sein
Die richtige Reihenfolge oder die Hauptkopf-Tags sind übrigens:
Diesen Weg
quelle
Timmy Franks hatte es richtig für mich. Wir hatten heute nur das Problem, dass der Client unternehmensweit über IE8 verfügte und die Site, die wir für das Intranet geschrieben haben, in den Kompatibilitätsmodus versetzt wurde. Das Einstellen von "IE-Edge" schien das Problem zu beheben.
quelle
Für Nginx
Ref: https://github.com/h5bp/server-configs/commit/a5b0a8f736d68f7de27cdcb202e32975a74bd2c5
quelle
Mit IE 11 können Sie die Einstellung für die Browserkompatibilitätsansicht nicht mehr überschreiben, indem Sie den Header senden ...
Die einzige Möglichkeit, den Browser zu zwingen, die Kompatibilitätsansicht nicht zu verwenden, besteht darin, den Benutzer in seinem Browser deaktivieren zu lassen. Unsere Site ist eine Intranetsite, und die Standard-IE-Option ist die Verwendung der Kompatibilitätsansicht für Intranetsites. Was für ein Schmerz!
Wir konnten verhindern, dass der Benutzer seine Browsereinstellungen für Benutzer von IE 9 und 10 ändern muss, dies funktioniert jedoch nicht mehr in IE 11. Unsere IE-Benutzer wechseln zu Chrome, wo dies kein Problem darstellt und dies nie getan hat gewesen.
quelle
IE11
keine anderen Kompatibilitätsmodi als unterstütztedge
. Link zur offiziellen Dokumentation . Das bedeutet, dass wir dieses Meta-Tag nicht mehr verwenden müssen, um die CM-Schaltfläche in der Adressleiste auszublenden.Ich konnte dies umgehen, indem ich die Header vor dem HTML mit PHP lud, und es funktionierte sehr gut.
ix.html ist der Inhalt, den ich nach dem Senden der Header laden wollte.
quelle
Ich hatte das gleiche Problem in IE11. Keine dieser Antworten löste mein Problem. Nachdem ich ein bisschen gegraben hatte, bemerkte ich, dass der Browser im Enterprise- Modus lief. (Überprüfen Sie dies, indem Sie F12 drücken und auf die Registerkarte Emulation klicken. Suchen Sie nach dem Dropdown-Menü für das Browserprofil.) Die Einstellung wurde gesperrt, sodass ich die Einstellung nicht ändern konnte.
Ich konnte das Profil nach dem Löschen von CurrentVersion aus dem folgenden Registrierungsschlüssel in Desktop ändern :
Nachdem Sie den Modus auf Desktop geändert haben, funktionieren die Antworten in diesem Beitrag.
quelle
Wenn Ihr Browser mit Kompatibilitätsmodi geöffnet wird, können Sie versuchen, den Registrierungsschlüssel zu deaktivieren, auch wenn Sie alle Konfigurationsmodi aus Ihrem Webbrowser und dem Editor für lokale Gruppenrichtlinien entfernen und deaktivieren.
Dies passiert mir auch bei der Verwendung von Domain und Subdomain, um eine Verbindung zur Serverseite herzustellen. Der Computer darf nur im Kompatibilitätsmodus für alle Subdomänen geöffnet werden.
KOMPABILITÄTSMODUS FÜR INTRANET DEAKTIVIEREN
HKEY_LOCAL_MACHINE - SOFTWARE - Richtlinien - Microsoft - Internet Explorer - BrowserEmulation -> IntranetCompalityMode Der Wert sollte 0 (Null) sein . Entfernen Sie außerdem den vorhandenen Domänennamen aus der Richtlinienliste.
Andernfalls können Sie einen neuen Wert (DWORD) hinzufügen, der 0 (Null) -Wertdaten enthält .
quelle
Ich hatte das gleiche Problem, nachdem ich viele Kombinationen ausprobiert hatte. Ich hatte diese Arbeitsnotiz, bei der die Kompatibilität für das Intranet überprüft wurde
quelle
Wenn Sie den LAMP-Stack verwenden, fügen Sie diesen in Ihre .htaccess-Datei in Ihrem Webstammordner ein. Sie müssen es nicht zu jeder PHP-Datei hinzufügen.
quelle