IE10 renderuje w trybie IE7. Jak wymusić tryb standardów?

Na stronie Microsoftu twierdzą, że wystarczy prosta deklaracja doctype. Ale nawet dokument tak krótki jak ten wraca do trybu IE7:

<!DOCTYPE html>
<html>
<head>
   <title></title>
</head>
<body>

</body>
</html>

Http://d.pr/i/fvzb+

Author: firedev, 2012-11-08

5 answers

Internet Explorer zakłada, że większość stron internetowych została napisana tak, aby kierować wcześniejsze wersje IE i patrzy na doctype, meta tagi i HTML, aby określić najlepszy tryb zgodności (czasami niepoprawnie). Nawet w przypadku HTML5 doctype IE nadal będzie umieszczać witrynę w trybie zgodności, jeśli jest to witryna intranetowa.

Aby upewnić się, że Twoja strona internetowa zawsze korzysta z trybu najnowszych standardów, możesz upewnić się, że Display intranet sites in Compatibly jest wyłączona. Jednak musisz to zrobić na każdej maszynie lokalne do serwera www (instrukcje są poniżej).

Alternatywnie i jeszcze lepiej możesz użyć nagłówka zgodnego z X-UA, aby wyłączyć to z serwera. Ważne jest, aby pamiętać, że używanie meta tagu nie zadziała!.

<!-- Doesn't always work! -->
<meta http-equiv="X-UA-Compatible" content="IE=edge" />

W MSDN mówi się, że użycie nagłówka hosta lub meta tagu powinno zastąpić nawet intranet sites. Artykuł zrozumienie trybów zgodności w internet explorer 8 mówi, co następuje.

Duża liczba wewnętrzne biznesowe strony internetowe są zoptymalizowane pod kątem przeglądarki Internet Explorer 7, więc ten domyślny wyjątek zachowuje tę zgodność. ... Ponownie, jeśli do Ustawienia trybu zgodności dokumentu zostanie użyty tag Meta lub nagłówek http, zastąpi on te ustawienia.

Jednak w praktyce nie będzie to działać, użycie nagłówka hosta jest jedyną opcją, która działa. Sekcja komentarze artykułu pokazuje również wiele przykładów tego konkretnego problemu.

Używanie Meta tagu ma również kilka innych problemy takie jak ignorowanie znacznika, jeśli nie znajduje się on bezpośrednio pod znacznikiem <head> lub jeśli przed nim jest zbyt dużo danych (4k). Może to również spowodować, że dokument zostanie zmieniony w niektórych wersjach IE, co spowolni renderowanie. Więcej na ten temat można przeczytać w artykule MSDN Best Practice: Get your HEAD in order.

Dodawanie zgodnego z X-UA nagłówka

Jeśli używasz. NET i IIS, możesz dodać to do sieci.config, można również zrobić to programowo:

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

Jeśli nie używasz IIS, łatwo jest to zrobić w dowolnym języku, na przykład oto jak to zrobić w php:

header('X-UA-Compatible: IE=edge');

Tak długo, jak nagłówek Kompatybilny Z X-UA jest obecny w dokumencie html5, witryna będzie zawsze działać w trybie najnowszych standardów.

Wyłączanie widoku zgodności
Nadal może być przydatne wyłączenie widoku zgodności. W tym celu odznacz Display all intranet sites in compatibility view w Ustawieniach widoku Zgodność.

Ustawienia Widoku Zgodności

You can bring this up klikając alt, aby uzyskać menu

Tutaj wpisz opis obrazka

Edit Ta odpowiedź dotyczy również IE9

 239
Author: Daniel Little,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-24 01:41:25

To mi pasuje..

<meta http-equiv="X-UA-Compatible" content="IE=edge" />
 25
Author: JGilmartin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-07-21 12:12:19

Spróbuj dodać następujący znacznik do głowy

<meta http-equiv="X-UA-Compatible" content="IE=11,IE=10,IE=9,IE=8" />
 10
Author: Jeow Li Huan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-02-26 01:46:39

Meta tag nie robi nic dla witryn intranetowych i moim problemem było renderowanie IE10 w trybie zgodności IE10. To, co rozwiązało dla mnie problem, to wzięcie @Jeow ' s answer dalej i użycie tej wartości w nagłówku http poprzez dodanie następującej wartości web.config pod IIS:

<system.webServer>
  <httpProtocol> 
    <customHeaders> 
      <clear />
      <!-- <add name="X-UA-Compatible" value="IE=edge" /> not good enough -->
      <add name="X-UA-Compatible" value="IE=11,IE=10,IE=9,IE=8" /> 
    </customHeaders> 
  </httpProtocol>
</system.webServer>

Dla celów IE, witryny intranetowe obejmują witryny publiczne, które nie są kierowane na zewnątrz - na przykład pracownik Stackoverflow pracujący w biurze prawdopodobnie zobaczyłby stackoverflow.com w tryb zgodności.

 2
Author: o.v.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 10:31:14

U mnie działało idealnie, gdy robiłem folowing:

On http://msdn.microsoft.com/en-us/library/gg699338 (v=vs.85). aspx

Użyłem dokładnego przykładu, który podali w pierwszym polu (dodałem brakujące </html> Na dole), otworzyłem go w IE10 i standardy zostały wymuszone, myślę, że możesz potrzebować rzeczywistej treści w html, aby wymusić standardy, które nie są pewne.

Moją propozycją byłoby zastąpienie pustego kodu rzeczywistą treścią (czymś prostym) i zobaczenie co tak.

 1
Author: ZacNespral21,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-02-25 17:17:06