2012-10-11 4 views
21

Dies macht mich verrückt.IE9 ständig mit IE7-Standards Dokument-Modus, egal was ich versuche

Egal was ich versuche, Internet Explorer wechselt zum IE7 Standards Document Mode. Ich habe versucht, meinen Code zurück zu strippen, um es zu versuchen, es zu benehmen, HTML5 boilet plate UND HTML5 reset (wessen eigene Seite geht in Quirks Mode) zu benehmen.

Ich habe auch das Meta-Tag, das IE zu seiner neuesten Version zwingen soll, egal was, aber alles, was getan hat, ist meine Mark-up ungültig gemäß W3C gemacht.

Das ist, was ich habe; Was vermisse ich?

<!doctype html> 

<!--[if IE 7 ]> <html class="ie7> <![endif]--> 
<!--[if IE 8 ]> <html class="ie8> <![endif]--> 
<!--[if gt IE 8]><!--><html><!--<![endif]--> 

<head> 
    <meta charset="utf-8"> 
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> 
    <title></title> 
    <link rel="stylesheet" href="css/style.css"> 
</head> 
<body> 
    <p>Test text</p>   
</body> 
</html> 

EDIT

ich eine Lösung unten über einen Vorschlag gefunden. Der Vorschlag hat nicht funktioniert, aber er hat mich zu einer Antwort geführt. Dies ist möglicherweise nicht 100% geeignet für alle, da es eine Klasse auf dem body Tag statt html auferlegt, aber es funktioniert für mich und scheint für IE zu arbeiten.

<!doctype html> 
<html> 
<head> 
    <meta charset="utf-8"> 
    <title></title> 
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> 
    <link rel="stylesheet" href="css/style.css"> 
</head> 
<!--[if IE 7 ]> <body class="ie7> <![endif]--> 
<!--[if IE 8 ]> <body class="ie8> <![endif]--> 
<!--[if gt IE 8]><!--><body><!--<![endif]--> 
<p>Test text</p>   
</body> 
</html> 
+0

Das funktioniert ganz gut in meinem IE9 unter Windows7. Es zeigt, dass der IE9-Standardmodus der Seitenstandard und der verwendete Modus ist. Zeigt Ihr IE9 den Standard der Seite als IE7 an? – andyb

+0

Ist Ihre Site in der "Intranetzone" in IE-Einstellungen? –

+0

nur aus Neugier, waren Entwickler-Tools sagen, dass die Seite standardmäßig IE9-Standards, aber immer noch mit IE7? Dies ist, was für mich passiert, ich versuche Ihre Lösung, aber der Fehler ist nicht konsistent, also bin ich mir noch nicht sicher, ob es behoben ... –

Antwort

10

ich eine Lösung über einen früheren Vorschlag gefunden haben. Der Vorschlag hat nicht funktioniert, aber er hat mich zu einer Antwort geführt. Dies ist möglicherweise nicht 100% geeignet für alle, da es eine Klasse auf dem body Tag statt html auferlegt, aber es funktioniert für mich und scheint für IE zu arbeiten.

<!doctype html> 
<html> 
<head> 
    <meta charset="utf-8"> 
    <title></title> 
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> 
    <link rel="stylesheet" href="css/style.css"> 
</head> 
<!--[if IE 7 ]> <body class="ie7> <![endif]--> 
<!--[if IE 8 ]> <body class="ie8> <![endif]--> 
<!--[if gt IE 8]><!--><body><!--<![endif]--> 
<p>Test text</p>   
</body> 
</html> 

EDIT

Ich habe tatsächlich gestoppt die oben mit und jetzt ist meine IE spezifische Klassen zum html Elemente hinzuzufügen, wie in HTML5BP vorgeschlagen.

Beachten Sie auch, dass Sie möglicherweise entfernen chrome=1 aus dem Meta-Tag als Chrome Frame wird bald getötet werden. Es ist jedoch nicht schade, dass es für die seltenen Fälle, in denen jemand es noch immer benutzt, beibehalten wird.

Eine andere Sache zu überprüfen, die ich nicht denke, wurde erwähnt, ist der Status der wahrscheinlich irritierendste Einstellung in IE - "Intranet-Sites in Kompatibilitätsansicht anzeigen". Wenn Sie einen Testserver mit einem Namen wie http://mytestserver:8888 ausführen, wird IE glauben, dass es sich um eine Intranetsite handelt, und wechselt zwischen den Modi, unabhängig davon, was Sie in Ihrem Dokumentenkopf tun.

Diese Einstellung ist in der Gruppenrichtlinie meines Unternehmens aktiviert, da unser altes Sharepoint-Intranet darauf basiert. Großartig für den alten Mist, aber schrecklich für die neuen Sachen, die sich tatsächlich an Standards halten werden.

Schalten Sie das Gerät in Tools > Compatibility View Settings aus, und seien Sie bereit, manuell auf es umzustellen, wenn Sie über Legacy-Sites verfügen.

10

von this thread

Der X-UA-Compatible-Meta-Tag muss direkt nach dem Titel im Elemente erscheinen. Keine anderen Metatags, CSS-Links und JS-Skripts können davor platziert werden.

+2

Ich habe versucht, was Sie vorgeschlagen und leider machte es keinen Unterschied. JEDOCH führte es mich zu der Antwort. Ich verwende bedingte Kommentare, um eine Klasse in mein 'html'-Tag einzutragen, damit ich mein CSS für ältere IE-Versionen anpassen kann. Es stellt sich heraus, dass bedingte Kommentare nicht vor 'head' verwendet werden können, also habe ich einfach meinen bedingten Kommentar in das body-Tag verschoben. Es funktioniert gut und ich kann mein CSS noch anpassen. DANKE. –

+0

@AlanShortis Bitte poste dies als Antwort auf deine eigene Frage. Es ist der korrekte formale Weg. –

+0

@Markus Fertig. Nochmals vielen Dank, dass Sie mich in die richtige Richtung weisen. –

8

Manchmal verhält sich IE auf Intranetseiten besonders schlecht und zwingt sie unabhängig von der <meta> Zeile im Kopf in den Kompatibilitätsmodus. Sie können jedoch der Server machen einen Header senden, um Brute-Force-IE, indem Sie folgende an der Web-Config zu verhalten:

<system.webServer> 
    <httpProtocol> 
     <customHeaders> 
     <add name="X-UA-Compatible" value="IE=Edge" /> 
     </customHeaders> 
    </httpProtocol> 
</system.webServer> 
+0

Danke dafür - nicht die Lösung für dieses spezielle Problem, aber ich habe einige Intranet-Arbeit am Horizont und werde sicherstellen, dass ich dies verwende. –

2

Ich hatte auch dieses Problem mit IE10 forciert IE7 Standards-Modus für Websites auf localhost. Das Hinzufügen/Verwenden eines virtuellen Hosts mit einem Punkt im Namen (local.x) löste das Problem.

+0

Das funktionierte wie ein Zauber. –

+0

Informationen zur Intranetzone, die das Rendering beeinflussen: http://msdn.microsoft.com/en-ca/library/jj676914(v=vs.85).aspx –

0

Der Link, der Stuart für mich gearbeitet gepostet, wie es auf der lokalen Website stehen für Kompatibilitätsmodus eingestellt wird. Nachdem ich die Intranet-Website aus der Kompatibilitätsmodusliste entfernt hatte, ging die Seite entsprechend dem Meta-Tag in den richtigen IE = 9-Modus über.

3

Halten Sie die

<!doctype html> 

die erste Zeile der Seite Quelle, und die X-UA-Compatible-Meta-Tag muss tilte Tag der benachbarten nächsten Geschwister sein.

0

Ich habe das folgende verwendet, um dieses Problem zu beheben, als IE8 im IE7-Standards-Dokument-Modus trotz allem anderen versuchte, das ich versuchte. Fügen Sie diese kurz vor der Doctype-Deklaration:

<!--[if IE ]><![endif]--> 

So ist die resultierende HTML etwas würde wie folgt aussehen:

<!--[if IE ]><![endif]--> 
<!doctype html> 
<!--[if IE 7]><html class="lt-ie8"><![endif]--> 
<!--[if IE 8]><html class="lt-ie9"><![endif]--> 
<!--[if gt IE 8]><!--><html><!--<![endif]--> 
<head> 
    <title>Page title here</title> 
    <meta http-equiv="X-UA-Compatible" content="IE=Edge"/> 

Jemand anderes auf kommentieren haben, warum dies scheint zu funktionieren - es ist ein Rätsel für mich.

Verwandte Themen