26

IE9 hat ein seltsames Problem, bei dem Intranetsites im Kompatibilitätsmodus gerendert werden.Verhindern, dass IE9 Intranet-Sites im Kompatibilitätsmodus darstellt

Kennt jemand einen Weg, dies zu verhindern?

Hinweis: Ich bin nicht auf der Suche nach einer Möglichkeit, dies auf einem Computer mit einem einzelnen Benutzer zu verhindern, sondern auf einem programmatischen Weg, um zu verhindern, dass die Site im Kompatibilitätsmodus gerendert wird.

Antwort

31

Nach einer umfassenden Suche, fand ich heraus, wie erfolgreich eine Intranet-Site von Rendering im Kompatibilitätsmodus verhindern IE9 auf this blog:

Von Tesmond Blog

Es gibt 2 Macken in IE9, den Kompatibilitätsmodus in dazu führen können, zu bleiben Wirkung. Das X-UA-kompatible Meta-Element muss das erste Meta-Element im Kopfbereich sein. Sie können keine konditionalen IE-Anweisungen vor dem X-UA-kompatiblen Meta-Element haben. Das bedeutet, wenn Sie Paul Irishs wunderbare HTML5-Boilerplate verwenden und dann in einem Intranet mit IE9-Standardeinstellungen, wird Ihre Website im Kompatibilitätsmodus angezeigt. Sie müssen den Beginn der Textvorschlag aus der folgenden Änderungen: -

<!doctype html> 
<!--[if lt IE 7]> <html class="no-js ie6 oldie" lang="en"> <![endif]--> 
<!--[if IE 7]> <html class="no-js ie7 oldie" lang="en"> <![endif]--> 
<!--[if IE 8]> <html class="no-js ie8 oldie" lang="en"> <![endif]--> 
<!--[if gt IE 8]><!--> <html class="no-js" lang="en"> <!--<![endif]--> 
<head> 
<meta charset="utf-8"> 
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> 

zu:

<!doctype html> 
<html class="no-js" lang="en"> 
<head> 
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> 
<meta charset="utf-8"> 
+4

wie gründlich gebrochen ist das? Ich bin mir nicht sicher, dass das so ein Paar "Macken" ist wie ein paar "Käfer". :) Danke, dass du mich auf den Artikel aufmerksam gemacht hast. – jinglesthula

+0

Das funktioniert nicht für IE8 :( –

+0

Ich fand eine Problemumgehung für das IE7-Rendering-Problem unten, wenn Sie mit Kompatibilitätsmodus leben können ... – Timmah

3

Dies kann durch Hinzufügen einer einfachen Meta-Tag

<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> 

Ein anderer Weg, um dies zu erreichen diesen Code Ihrer .htaccess-Datei hinzuzufügen, ist geschehen!

# ---------------------------------------------------------------------- 
# Better website experience for IE users 
# ---------------------------------------------------------------------- 

# Force the latest IE version, in various cases when it may fall back to IE7 mode 
# github.com/rails/rails/commit/123eb25#commitcomment-118920 
# Use ChromeFrame if it's installed for a better experience for the poor IE folk 

<IfModule mod_headers.c> 
    Header set X-UA-Compatible "IE=Edge,chrome=1" 
    # mod_headers can't match by content-type, but we don't want to send this header on *everything*... 
    <FilesMatch "\.(js|css|gif|png|jpe?g|pdf|xml|oga|ogg|m4a|ogv|mp4|m4v|webm|svg|svgz|eot|ttf|otf|woff|ico|webp|appcache|manifest|htc|crx|oex|xpi|safariextz|vcf)$" > 
    Header unset X-UA-Compatible 
    </FilesMatch> 
</IfModule> 
+0

Ich habe gerade versucht, das Meta-Tag hinzuzufügen. Das Problem wurde jedoch nicht behoben und ich habe keinen Zugriff auf meine htaccess-Datei. Sind Sie sicher, dass das Meta-Tag für Intranetsites funktioniert? Ich weiß, ob es für normale Sites funktioniert, aber nicht sicher über Intranets. – novicePrgrmr

+0

Haben Sie versucht, alle Ihre temporären Internetdateien zu löschen oder sie sogar auf einem anderen PC zu testen? – Ruud

+0

Ja, tatsächlich auf einem anderen PC getestet. Ich habe ein bisschen mehr recherchiert, und es ist nicht möglich, den Intranet-Kompatibilitätsmodus in IE9 zu überschreiben. – novicePrgrmr

1

Wenn Sie Code auf der Homepage hinzufügen können, können Sie einfach hinzufügen:

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

auf Header Ihrer Website.

(Sie können auch <meta http-equiv="X-UA-Compatible" content="IE=9"> verwenden, um IE9-Renderer zu erzwingen) Dies wird IE9 zum Rendern im Standardmodus zwingen.

Eine andere Möglichkeit ist, einen anderen Doctype zu verwenden: dies Ihrer Code oben Put:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" 
"http://www.w3.org/TR/html4/strict.dtd"> 
+1

Habe gerade beide IE-Edge und IE-9 Methoden ausprobiert. Keine funktionierte. Ich muss das Meta-Tag in der '' '' richtig platzieren? – novicePrgrmr

+0

Yeas, innen (unten) der '' Tag. Wenn es nicht funktioniert, löschen Sie Ihre Doctype und ersetzen Sie sie durch: '' – jAC

+0

Erste arbeitete für mich, danke – ianbroad

4

Nach von @ novicePrgrmr Antwort scheint es eine Abhilfe für IE9 Laden Intranets in IE7-Modus zu sein . Während dieser noch Kompatibilitätsmodus auslöst, fand ich eine leichte Modifikation zu Paul Irish's HTML5 boilerplate markup mindestens IE9 Intranets ermöglicht in IE9-Standards zu machen:

<!doctype html> 
<html class="no-js" lang="en"> 
<head> 
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> 
<meta charset="utf-8"> 
</head> 
<!--[if lt IE 7]> <body class="home lt-ie9 lt-ie8 lt-ie7"> <![endif]--> 
<!--[if IE 7]>  <body class="home lt-ie9 lt-ie8"> <![endif]--> 
<!--[if IE 8]>  <body class="home lt-ie9"> <![endif]--> 
<!--[if IE 9]>  <body class="home lt-ie10"><![endif]--> 
<!--[if gt IE 9]><!--> <body class="home"> <!--<![endif]--> 

    <p>content</p> 

</body> 
</html> 

Dies ist immer noch gültig HTML und bestehende IE-spezifische CSS sollte noch gut funktionieren, vorausgesetzt, Sie zielen auf den IE mit .lt-ie und nicht auf html.lt-ie.

+0

ja Das funktioniert, das Geheimnis besteht darin, Ihre bedingten Anweisungen außerhalb Ihres Kopf-Tags zu haben. – uknowit2

Verwandte Themen