Ich bin ziemlich verwirrt. Ich sollte in der Lage sein, Folgendes einzustellen
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
und IE8 und IE9 sollten die Seite mit der neuesten Rendering-Engine darstellen. Ich habe es jedoch gerade getestet, und wenn der Kompatibilitätsmodus an anderer Stelle auf unserer Website aktiviert ist, bleibt er auch für unsere Seite aktiviert, obwohl wir ihn eigentlich ausschalten sollten.
Wie können Sie sicherstellen, dass IE den Kompatibilitätsmodus nicht verwendet (selbst in einem Intranet)?
FWIW, ich verwende die HTML5 DocType-Deklaration (<!doctype html>
).
Hier sind die ersten paar 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" />
EDIT: Ich habe gerade erfahren, dass die Standardeinstellung des IE8 die Verwendung des IE7-Kompatibilitätsmodus für Intranet-Sites vorsieht. Würde dies den Meta-Tag X-UA-Compatible außer Kraft setzen?
Wenn Sie die Kompatibilitätseinstellungen des IE für Intranetseiten außer Kraft setzen müssen, können Sie dies in der web.config (IIS7) oder über die [custom HTTP headers] (http://www.iis.net/configreference/system.webserver/httpprotocol) in den Eigenschaften der Website (IIS6) tun und dort X-UA-Compatible einstellen. Der Meta-Tag überschreibt nicht die Intranet-Einstellung des IE in den Einstellungen der Kompatibilitätsansicht, aber wenn Sie ihn auf dem Hosting-Server setzen, überschreibt er die Kompatibilität.
Beispiel für web.config in IIS7:
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="X-UA-Compatible" value="IE=EmulateIE8" />
</customHeaders>
</httpProtocol>
</system.webServer>
Edit: Ich habe den "clear"-Code direkt vor "add" entfernt; es war ein unnötiges Versehen beim Kopieren und Einfügen. Gut erkannt, liebe Kommentatoren!
Die serverseitige Lösung ist die empfohlene, wie @TimmyFranks in seiner Antwort vorgeschlagen hat, aber wenn man die "X-UA-kompatible" Regel auf der Seitenebene implementieren muss, lesen Sie bitte die folgenden Tipps, um von den Erfahrungen derjenigen zu profitieren, die sich bereits verbrannt haben
Der X-UA-Compatible
Meta-Tag muss direkt nach dem Titel im <head>
Element erscheinen. Keine anderen Meta-Tags, CSS-Links und JS-Skript-Aufrufe können davor platziert werden.
<head>
<title>Site Title</title>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta charset="utf-8">
<script type="text/javascript" src="/jsFile.js"></script>
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="apple-touch-icon" href="/apple-touch-icon.png" />
<link rel="shortcut icon" href="/apple-touch-icon.png" />
</head>
Wenn es auf der Seite bedingte Kommentare gibt (z.B. im <html>
), müssen sie unter, nach dem <head>
platziert werden.
// DON'T: place class inside the HTML tag
<!--[if gt IE 8]><!-->
<html class="aboveIe8">
<!--<![endif]-->
// DO: place the class inside the BODY tag
<!--[if gt IE 8]><!-->
<body class="aboveIe8">
<!--<![endif]-->
Html5BoilerPlate's Team hat über diesen Fehler geschrieben - http://h5bp.com/i/378 Sie haben mehrere Lösungen.
In Bezug auf Intranet & Kompatibilitätsansicht, there're Einstellungen, wenn Sie auf Werkzeuge > Kompatibilitätsansicht Einstellungen gehen.
Kompatibilitätsansicht-Einstellungen]1
Wie sich herausstellt, hat dies mit [Microsoft's "intelligent" Wahl] (http://blogs.msdn.com/b/ie/archive/2008/08/27/introducing-compatibility-view.aspx) zu tun, alle Intranet-Sites in den Kompatibilitätsmodus zu zwingen, auch wenn X-UA-Compatible
auf IE=edge
gesetzt ist.