Ich arbeite für einen Client, der den Kompatibilitätsmodus auf allen Intranetsites erzwingt. Ich habe mich gefragt, ob es ein Tag gibt, das ich in meinen HTML-Code einfügen kann, um den Kompatibilitätsmodus zu deaktivieren.
html
internet-explorer
Al Katawazi
quelle
quelle
Antworten:
Es gibt den "Kanten" -Modus .
Von der verlinkten MSDN-Seite:
Der "Kanten" -Modus wird jedoch in der Produktion nicht empfohlen:
Ich verstehe ehrlich gesagt nicht ganz warum. Demnach ist der beste Weg im Moment die Verwendung
IE=8
.quelle
IE=10
auf ihren eigenen Websites zu verwenden. Wenn Sie Ihre Site in IE10 (Vorschau-Version) getestet haben, können Sie diese sicher verwenden. Andernfalls möchten Sie vielleicht vorerst dabei bleibenIE=9
.Tools->Compatibility View Settings
Alle Websites in der Kompatibilitätsansicht anzeigen aktiviert haben . Um das Problem zu beheben, muss ich den Header in der HTTP-Antwort zurückgeben:X-UA-Compatible: IE=edge
Nach vielen Stunden bei der Fehlerbehebung ... Hier sind einige kurze Highlights, die uns aus den
X-UA-Compatible
Dokumenten geholfen haben : http://msdn.microsoft.com/en-us/library/cc288325(VS.85).aspx#ctl00_contentContainer_ctl16Verwenden von
<meta http-equiv="X-UA-Compatible" content=" _______ " />
Die Standardbenutzer-Agent- Modi (die nicht emulierten) ignorieren
<!DOCTYPE>
Anweisungen auf Ihrer Seite und rendern basierend auf den Standards, die von dieser IE-Version unterstützt werden (z. B.IE=8
werden Tabellenabstandsabstände und einige Pseudo-Selektoren besser eingehalten alsIE=7
).Während die Emulationsmodi den IE anweisen , alle
<!DOCTYPE>
Anweisungen auf Ihrer Seite zu befolgen , wird der Standardmodus basierend auf der von Ihnen ausgewählten Version und der Mackenmodus basierend auf dem Modus gerendertIE=5
Mögliche Werte für das
content
Attribut sind:content="IE=5"
content="IE=7"
content="IE=EmulateIE7"
content="IE=8"
content="IE=EmulateIE8"
content="IE=9"
content="IE=EmulateIE9"
content="IE=edge"
quelle
Wenn Sie mit einer Seite in der Intranetzone arbeiten, werden Sie möglicherweise feststellen, dass IE9, egal was Sie tun, in den IE7-Kompatibilitätsmodus wechselt.
Dies liegt an der Einstellung in den IE-Kompatibilitätseinstellungen, die besagt, dass alle Intranetsites im Kompatibilitätsmodus ausgeführt werden sollen. Sie können dies über eine Gruppenrichtlinie deaktivieren (oder einfach im IE deaktivieren) oder Folgendes festlegen:
Dies funktioniert (wie in anderen Antworten beschrieben), wird jedoch möglicherweise zunächst nicht so angezeigt: Es muss erfolgen, bevor die Stylesheets deklariert werden . Wenn Sie dies nicht tun, wird es ignoriert.
quelle
Ich glaube, das wird den Trick machen:
quelle
Wie in dieser Antwort auf eine verwandte Frage vorgeschlagen, kann der "Kanten" -Modus in der Datei Web.Config festgelegt werden. Dadurch wird es auf den gesamten von der Anwendung zurückgegebenen HTML-Code angewendet, ohne dass er in einzelne Seiten eingefügt werden muss:
Der gleiche Schritt kann auch ausgeführt werden, indem die "HTTP-Antwortheader" mit IIS Manager für den IIS-Server, die gesamte Website oder bestimmte Anwendungen geändert werden.
quelle
Die Meta-Tag-Lösung funktionierte bei uns nicht, aber das Festlegen im Antwortheader hat Folgendes bewirkt:
quelle
chrome=1
Eigenschaft: stackoverflow.com/a/22059516/368691 . Bedenken Sie jedoch, dass Chrome Frame in den Ruhestand versetzt wurde. blog.chromium.org/2013/06/retiring-chrome-frame.htmlNur noch ein paar Anmerkungen zu diesem Thema, basierend auf meinen jüngsten Erfahrungen. Die Universität, an der ich arbeite, gibt Laptops mit IE 8 heraus, die für alle Intranetsites auf den Kompatibilitätsmodus eingestellt sind. Ich habe versucht, das Meta-Tag hinzuzufügen, um diesen Modus für Seiten zu deaktivieren, die von meiner Site bereitgestellt werden, aber der IE hat dieses Tag konsequent ignoriert. Wie Lance in seinem Beitrag erwähnt hat, wurde dieses Problem durch Hinzufügen eines Antwortheaders behoben. So setze ich den Header basierend auf der HTML5-Boilerplate-Methode:
Damit dieser Header tatsächlich gesendet wird, müssen Sie sicherstellen, dass mod_headers in Apache aktiviert ist. Wenn du sicherstellen willst, dass du diesen Mod aktiviert hast, lege dies auf eine Seite, auf der PHP ausgeführt werden kann:
quelle
IE8 verwendet standardmäßig den Standardmodus für das intERnet und den Quirks-Modus für das intRAnet. Das HTML-Meta-Tag wird ignoriert, wenn Sie den Doctype auf xhtml Transitional gesetzt haben. Die Lösung besteht darin, dem Code einen HTTP-Header hinzuzufügen. Das hat bei uns funktioniert. Jetzt zwingt unsere Intranetseite IE8, die App im Standardmodus zu rendern.
Zu PageInit der Basisseitenklasse (ASP.net C #) hinzugefügt:
Referenz: http://ilia.ws/archives/196-IE8-X-UA-Compatible-Rant.html
quelle
Dies liegt an der Einstellung in den IE-Kompatibilitätseinstellungen, die besagt, dass alle Intranetsites im Kompatibilitätsmodus ausgeführt werden sollen. Sie können dies über eine Gruppenrichtlinie deaktivieren (oder einfach im IE deaktivieren) oder Folgendes festlegen:
Anscheinend ist es nicht möglich, die Einstellungen der Kompatibilitätsansicht als Gruppenrichtlinie zu ändern, aber es ist etwas, das möglicherweise in der Registrierung geändert werden kann. Dieses Meta-Tag funktioniert gut für mich. Ich musste das erforderliche Attribut als Teil eines HTML-Formulars verwenden Es funktionierte in Chrome und Firefox, aber nicht in IE.
Hier ist ein schönes Bild davon, welche Browser jedes einzelne HTML 5-Element unterstützen.
http://html5readiness.com/
Beachten Sie den einen gemeinsamen Nenner Google Chrome, der alles unterstützt. Hoffe das ist hilfreich
quelle
Als erstes Element unter dem Tag einfügen.
Dies zwingt den IE, die Seite in der physischen Version des IE zu rendern, und ignoriert die "Moduseinstellung" des Browsers. Dies kann in den Entwicklertools festgelegt werden. Versuchen Sie, es zum Testen auf eine ältere Version des IE zu ändern. Dies sollte ignoriert werden und die Seite sollte genau gleich aussehen.
quelle
Wenn Sie Zugriff auf den Server haben, können Sie dies am zuverlässigsten auf dem Server selbst in IIS tun. Wechseln Sie zu den IIS-HTTP-Antwortheadern. Name hinzufügen: X-UA-kompatibel
Wert: IE = edge Dies überschreibt Ihren Browser und Ihren Code.
quelle
Wenn Sie möchten, dass jede einzelne Webseite den ausgewählten Inhalt lädt und asp.net verwendet. Wenden Sie es einfach als erstes Tag unter dem Überschriften-Tag in Ansichten> freigegeben> Layout.cshtml an
Nur ein Hinweis
quelle