Standardmäßig zwingt IE8 Intranet-Websites in den Kompatibilitätsmodus. Ich habe versucht, den Meta-Header in IE8 zu ändern, aber er erkennt den Meta-Header nicht und verwendet nur die Browsereinstellung. Weiß jemand, wie man das deaktiviert?
200
Antworten:
Es ist möglich, den Kompatibilitätsmodus im Intranet zu überschreiben.
Fügen Sie für IIS einfach den folgenden Code zur web.config hinzu. Arbeitete für mich mit IE9.
Äquivalent für Apache:
Und für Nginx:
Und für express.js:
quelle
Michael Irigoyen ist richtig, aber es ist etwas komplizierter ...
Wenn Sie das wunderbare Boilerplate von Paul Irish verwenden, haben Sie ungefähr Folgendes: -
Dies funktioniert NICHT wie erwartet und erzwingt im IE den Kompatibilitätsmodus in einer Intranetumgebung, wenn Sie die Option "Intranetsites in Kompatibilitätsansicht anzeigen" aktiviert haben. Sie müssen die bedingten IE-Kommentare entfernen, um den Intranet-Kompatibilitätsmodus zu verhindern.
Der folgende Code funktioniert also:
Wenn Sie vor der
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
Anweisung bedingte IE-Kommentare auslösen, werden Sie in einer Intranet- Umgebung in den Kompatibilitätsmodus versetzt, wenn Sie IE9 mit den Standardeinstellungen ausführen.UPDATE - ZUSÄTZLICHE INFORMATIONEN: Beachten Sie jedoch, dass es einen Trick gibt, mit dem die HTML5-Kochplatte funktioniert:
Fügen Sie vor dem DOCTYPE einen leeren, bedingten Kommentar hinzu. Beachten Sie auch, dass Sie in diesem Fall auch bedingte Kommentare um die
X-UA-Compatible
Direktive hinzufügen können , sodass die Seite auch HTML5-gültig ist. Also zum Beispiel:Ein Blog-Beitrag, der vom ersten Teil dieser Antwort inspiriert wurde , enthält weitere Details. Und übrigens: Wie in diesem Blog - Eintrag erwähnt, kann man auch den bedingten Kommentar vor dem DOCTYPE mit einem ersetzen halb bedingten Kommentar mit keiner Bedingung :
<!--[]-->
. Also wie so:Beachten Sie jedoch, dass die letztere Variante (
<--[]--><!DOCTYPE html>
), wie z. B. durch diese Antwort auf eine andere Frage erläutert , das bekannte Problem aktiviert, in das sie - für ältere IE-Versionen ohne Unterstützung fürX-UA-Compatioble
(lesen Sie: für IE7 und IE6) - den Browser einbindet Macken-Modus.quelle
Wenn Sie das Menü "Extras" aufrufen und "Einstellungen für die Kompatibilitätsansicht" auswählen, wird in diesem Dialogfeld unten die Einstellung "Intranetsites im Kompatibilitätsmodus anzeigen" angezeigt. Wenn Sie dies deaktivieren, sollte das Problem behoben sein, und der IE verwendet den auf DOCTYPE basierenden Modus.
quelle
Die Antworten auf diese Frage sind etwas verwirrend.
Die beste Antwort ist derzeit eine serverseitige Lösung, die ein Flag im http-Header setzt. Einige Kommentare weisen darauf hin, dass eine Lösung mit einem Meta-Tag einfach nicht funktioniert.
Ich denke, dieser Blogeintrag gibt einen schönen Überblick über die Verwendung von Kompatibilitäts-Metainformationen und funktioniert meiner Erfahrung nach wie folgt: http://blogs.msdn.com/b/cjacks/archive/2012/02/29/using-x- ua-kompatibel-um-dauerhafte-Unternehmens-Webanwendungen zu erstellen.aspx
Die Haupt-Punkte:
Ein wichtiger Punkt (und ich denke, von diesem Punkt kommt viel Verwirrung) ist, dass der IE zwei "Klassen" von Modi hat:
Der Dokumentmodus bestimmt die Rendering-Engine (wie wird die Webseite gerendert).
Der Browsermodus bestimmt, welche User-Agent-Zeichenfolge (UA) der IE an Server sendet, welchen IE-Modus der Dokumentmodus standardmäßig verwendet und wie der IE bedingte Kommentare auswertet.
Weitere Informationen zum Dokumentmodus im Vergleich zum Browsermodus finden Sie in diesem Artikel: http://blogs.msdn.com/b/ie/archive/2010/06/16/ie-s-compatibility-features-for- site-developer.aspx? Redirected = true
Nach meiner Erfahrung beeinflussen die Kompatibilitäts-Metadaten nur den Dokumentmodus . Wenn Sie sich also auf die Browsererkennung verlassen, hilft Ihnen dies nicht weiter. Wenn Sie jedoch die Funktionserkennung verwenden, sollte dies der richtige Weg sein.
Daher würde ich empfehlen, das Meta-Tag (auf der HTML-Seite) mit dieser Syntax zu verwenden:
Hinweis: Geben Sie eine Liste der Browsermodi an, auf die Sie getestet haben.
Der Blog-Beitrag rät auch von der Verwendung von EmulateIEX ab. Hier ein Zitat:
quelle
Versuchen Sie dieses Metatag:
Es sollte IE8 zwingen, als IE8-Standardmodus zu rendern, auch wenn "Intranetsites in Kompatibilitätsansicht anzeigen" aktiviert ist [entweder für Intranet oder alle Websites]. Ich habe es selbst in IE 8.0.6 versucht
quelle
Unser Systemadministrator hat dieses Problem behoben, indem er das Kontrollkästchen für unser Unternehmen global deaktiviert hat. Benutzer mussten sich nicht einmal abmelden.
quelle
Ich habe eine funktionierende Antwort gefunden, mit der die aktivierte Intranet-Kompatibilitätsansicht überschrieben werden kann. Fügen Sie einfach im OnInit-Ereignis Ihrer Seite diese Zeile hinzu (kein meta oder web.config customHeader erforderlich):
quelle
Versuchen Sie, Folgendes in die Kopfzeile einzufügen:
Mit freundlicher Genehmigung des HTML5 Boilerplate von Paul Irish (funktioniert aber auch in XHTML Transitional).
quelle
Ich konnte den Kompatibilitätsmodus überschreiben, indem ich das Meta-Tag im Kopfbereich als DAS ERSTE TAG angab , nicht nur als erstes Meta-Tag, sondern nur als SEHR ERSTES TAG .
Vielen Dank an @ stefan.s, dass Sie mich in Ihrer ausgezeichneten Antwort darauf aufmerksam gemacht haben. Vor dem Lesen hatte ich:
Das hat nicht funktioniert
hat das Link-Tag aus dem Weg geräumt und es hat funktioniert
DAS FUNKTIONIERT :
Ein IE8-Client, der auf Kompatibilität eingestellt ist, rendert die Seite als IE8-Standardmodus. Der Inhalt = 'IE = 9' bedeutet, dass der höchste verfügbare Standard bis einschließlich IE9 verwendet wird.
quelle
Dies ist nicht gerade eine Lösung, aber ich denke, es ist die beste. Auf unseren Intranetseiten teilen wir den Leuten mit, dass nur Firefox darauf zugreifen kann. Wir nehmen die IE-Benutzer hier nicht freundlich auf. Überprüfen Sie den Benutzeragenten auf der Server- oder Clientseite und verweigern Sie ihm den Zugriff vom IE. Und ich bin ein .NET-Programmierer.
quelle
Ich hatte mit diesem Problem zu kämpfen und wollte helfen, eine einzigartige Lösung und Einsicht zu bieten.
Bestimmte AJAX-basierte Frameworks fügen zu Beginn des Programms Javascripts und Stylesheets ein.
<head>
Dies scheint zu verhindern, dass die etablierte Meta-Tag-Lösung ordnungsgemäß funktioniert. In diesem Fall stellte ich fest, dass das Problem direkt durch Einfügen in den HTTP-Antwortheader behoben werden kann, ähnlich wie bei Andras Csehis Antwort.Für diejenigen von uns, die Java-Servlets verwenden, ist die Verwendung eines ServletFilter eine gute Möglichkeit, dies zu lösen.
quelle
Wir können dieses Problem in der Spring-Apache-Tomcat-Umgebung beheben, indem wir eine einzelne Zeile in der RequestInterceptor-Methode hinzufügen.
Referenz von - So erstellen Sie einen Filter und ändern den Antwortheader Hier erfahren Sie, wie Sie dieses Problem über einen RequestInterceptor (Spring) beheben können.
quelle
Wenn Sie möchten, dass Ihre Website den IE 8-Standardmodus erzwingt, verwenden Sie dieses Metatag zusammen mit einem gültigen DOCTYPE:
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE8" />
Beachten Sie den Wert "EmulateIE8" und nicht den einfachen Wert "IE8".
Laut IE-Entwicklern sollte dies "Standard-DOCTYPEs im IE8-Standardmodus anzeigen; Quirks anzeigen DOCTYPEs im Quirks-Modus anzeigen. Verwenden Sie dieses Tag, um die Kompatibilitätsansicht auf Client-Computern zu überschreiben und Standards für IE8-Standards zu erzwingen."
Weitere Informationen zu diesem IE-Blogbeitrag: http://blogs.msdn.com/b/ie/archive/2008/08/27/introducing-compatibility-view.aspx
quelle
Diese Frage ist ein Duplikat des Force "Internet Explorer 8" -Browsermodus im Intranet .
Die Antworten dort zeigen an, dass es nicht möglich ist, die Kompatibilitätsansicht (auf der Serverseite) zu deaktivieren - https://stackoverflow.com/a/4130343/24267 . Dies scheint sicherlich der Fall zu sein, da keiner der Vorschläge, die ich versucht habe, funktioniert hat. In IE8 wird der "Browsermodus" auf die Kompatibilitätsansicht von Internet Explorer 8 eingestellt, unabhängig davon, welche Art von X-UA-kompatiblem Header Sie senden.
Ich musste eine spezielle Behandlung für IE7 und den Kompatibilitätsmodus durchführen, die dazu führte, dass der Browser mit IE8 renderte, aber meldete, dass es sich um IE7 handelte, und meinen Code beschädigte. So habe ich meinen Code repariert (mir ist bewusst, dass dies ein schrecklicher Hack ist und ich sollte auf Funktionen testen, die keine Browserversionen sind):
quelle
Hatte das gleiche Problem. Es funktionierte mit
quelle
Fügen Sie dies in das Head-Tag Ihrer Seite ein (für die gewünschte IE-Version):
Beachten Sie, dass dies NICHT die Tatsache ändert, dass der Browser angibt, dass er sich im Kompatibilitätsmodus befindet (als Browsermodus bezeichnet), die Seite jedoch im IE8-Standardmodus gerendert wird. Wenn es NOCH nicht so wiedergibt, wie Sie es wünschen, liegt es wahrscheinlich daran, dass Sie über Javascript verfügen, das die IE-Version fälschlicherweise überprüft. Siehe die folgende Blog - Post , um zu bestimmen , welche Eigenschaft sollten Sie Keying ausgeschaltet werden , weil selbst wenn Sie den Meta - X-UA-Compatible - Tag gesetzt ist , wird der User - Agent - String noch sagen MSIE 7.0 .
In meinem Fall musste ich für das Update eine Überprüfung für den IE7-Kompatibilitätsmodus hinzufügen. Ich habe dazu einen einfachen Javascript-Code verwendet:
quelle
Für alle anderen, die dies lesen und dies über das Gruppenrichtlinienobjekt für alle Benutzer deaktivieren möchten, ist dies die Einstellung:
Computerkonfiguration / Administrative Vorlagen / Windows-Komponenten / Internet Explorer / Kompatibilitätsansicht / Aktivieren des Internet Explorer-Standardmodus für lokales Intranet
obwohl die web.config edit es für mich behoben hat.
quelle
Ändern Sie die Header in .htaccess
Die Lösung für dieses Problem finden Sie hier: https://github.com/h5bp/html5-boilerplate/issues/378
quelle
Der Kommentar von Stefan S zum Dokumentmodus im Vergleich zum Browsermodus war für mein Problem sehr relevant.
Ich habe die X-UA-Content-Metadaten auf der Seite, aber ich habe die Browserversion clientseitig über getestet
navigator.appVersion
. Dieser Test spiegelt nicht die Metadaten wider, da der Browsermodus nicht der Dokumentmodus ist.Die Antwort für mich war, Folgendes zu testen
document.documentMode
:Jetzt spiegelt sich mein Meta-X-UA-Content-Tag in meinem Browsertest wider.
Warum mache ich so etwas verpöntes wie den Browser zu testen? Geschwindigkeit. Verschiedene meiner jQuery-Add-Ins, wie z. B. Tablesorter, sind in IE6 / 7 einfach zu langsam, und ich möchte sie deaktivieren. Ich bin nicht sicher, ob das Testen auf Browserfunktionen mir helfen kann, dieses Problem zu lösen.
quelle