Wie kann ich den IE-Kompatibilitätsmodus programmgesteuert deaktivieren?

75

Ich habe mich eine Weile damit beschäftigt - ich konnte nicht herausfinden, warum eine Website in zwei identischen Versionen von Internet Explorer unterschiedlich gerendert wird. Vor einer halben Stunde stieß ich im IE auf eine Schaltfläche für den Kompatibilitätsmodus, die mich sehr verärgerte.

Das Deaktivieren des Kompatibilitätsmodus hat mein Problem behoben.

Gibt es eine Möglichkeit, es programmgesteuert zu deaktivieren, dh von einer Webseite aus?

Bearbeiten:

Ich bin gerade auf diesen Blog gestoßen: https://blogs.msdn.com/b/askie/archive/2009/03/23/understanding-compatibility-modes-in-internet-explorer-8.aspx

Ich werde nach dem Lesen des Artikels einen Beispielcode veröffentlichen

Cœur
quelle
Sie sind sich nicht sicher, ob Sie dies über eine Webseite tun können. Möglicherweise ist es besser, den IE-Kompatibilitätsmodus (IE 7) zu codieren. :(
Spooks
Siehe stackoverflow.com/questions/1014666/… . Es hat nichts mit dem Doctype zu tun.
David Kolar
Ich gehe davon aus, dass es eine Windows / IE-Einstellung gibt, aber Sie können auf der Webseite nichts tun, um dies zu diktieren, da Sie im IE8 bleiben und nicht in den Kompatibilitätsmodus wechseln möchten.
James Black

Antworten:

92

Wenn Sie möchten, dass das "alte" Rendering und keine Schaltfläche in der Symbolleiste angezeigt werden, damit Benutzer den Modus wechseln können, können Sie Folgendes verwenden:

<head>
  <!-- Mimic Internet Explorer 7 -->
  <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" >
  <title>My Web Page</title>
</head>

andere Optionen (alt und neu) schließen ein : IE=5, IE=7, IE=8, oderIE=edge

(Kante entspricht dem höchsten verfügbaren Modus)

scunliffe
quelle
Danke - das funktioniert. Dies bedeutet immer noch, dass ich meinen Code ändern muss, um in IE 7 zu arbeiten.
Gibt es etwas Besonderes, das im IE8-Standardmodus nicht funktioniert? Wenn ja, posten Sie eine andere Frage und vielleicht können wir sie für Sie lösen.
Scunliffe
Es ist eine Positionierung von Divs. Ich habe irgendwo gelesen, dass IE7 zusätzliche Pixel für den linken und rechten Rand oder etwas in diesen Zeilen benötigt. Die Seite sieht gut aus in Firefox, Safari, Chrome, sogar 8 ohne Kompatibilitätsmodus ... aber IE 7 ist eine andere Geschichte
1
Omg danke. Das hat mich verrückt gemacht. Ich bin ein Webentwickler und entwickle Dinge auf der IE9-Plattform, aber wenn ich die Arbeit einreiche und sie durch andere Dinge drängt, wird alles auf einer Live-Seite verzerrt. Mit diesem kleinen Trick konnte ich die IE9-Einstellungen so erzwingen, wie ich sie sehe, und unzählige scheinbar CSS-Probleme beseitigen, die sogar jQuery-Operationen störten.
Lukas
2
Wenn Sie dies aus irgendeinem Grund nicht vor Skript oder CSS in den Kopf einfügen können, können Sie es als Header in Ihre Webserverkonfiguration einfügen.
Lucas Holt
4

Bitte beachten Sie auch, dass auch IE8-Browsereinstellungen einen bestimmten Modus erzwingen können. Ich habe einen Kunden, dessen IE8-Kompatibilitätsmodus durch Richtlinien im Intranetmodus erzwungen wird.

Deckard
quelle
+1, dies kann auch in IE9 erzwungen werden. Wahrscheinlich in allen neueren IE-Versionen, denke ich.
am_
0

Bitte hinzufügen, um zu erzwingen, dass der IE den Kompatibilitätsmodus nicht anwendet

<meta http-equiv=Content-Type content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE8">
Der Anh Nguyen
quelle
0

In meinem Fall habe ich das Problem behoben, indem ich nach dem <head>Tag das folgende Tag hinzugefügt habe :

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