W witrynie firmy Microsoft twierdzą, że wystarczy zwykła deklaracja typu doctype. Ale nawet dokument tak krótki, jak ten, wraca do trybu IE7:
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
</body>
</html>
W witrynie firmy Microsoft twierdzą, że wystarczy zwykła deklaracja typu doctype. Ale nawet dokument tak krótki, jak ten, wraca do trybu IE7:
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
</body>
</html>
Odpowiedzi:
Internet Explorer przyjmuje założenie, że większość stron internetowych została napisana z myślą o wcześniejszych wersjach IE i sprawdza typ dokumentu, metatagi i HTML, aby określić najlepszy tryb zgodności (czasami nieprawidłowo). Nawet z dokumentem HTML5 IE nadal będzie umieszczać Twoją witrynę w trybie zgodności, jeśli jest to witryna intranetowa.
Aby upewnić się, że Twoja witryna internetowa zawsze korzysta z trybu najnowszych standardów, możesz albo upewnić się, że Display intranet sites in Compatibly
jest wyłączony. Jednak musisz to zrobić na każdym komputerze lokalnie na serwerze WWW (instrukcje znajdują się poniżej).
Alternatywnie, jeszcze lepiej, możesz użyć X-UA-Compatible
nagłówka, aby wyłączyć to z serwera. Należy pamiętać, że użycie metatagu nie zadziała!
<!-- Doesn't always work! -->
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
W całej witrynie MSDN wspomina się, że użycie nagłówka hosta lub metatagu powinno zastąpić nawet witryny intranetowe. Artykuł Zrozumienie trybów zgodności w programie Internet Explorer 8 mówi, co następuje.
Wiele wewnętrznych firmowych witryn sieci Web jest zoptymalizowanych pod kątem programu Internet Explorer 7, więc ten domyślny wyjątek zachowuje tę zgodność. ... Ponownie, jeśli tag Meta lub nagłówek http jest używany do ustawienia trybu zgodności dokumentu, nadpisze te ustawienia.
Jednak w praktyce to nie zadziała, użycie nagłówka hosta jest jedyną działającą opcją. Sekcja komentarzy w artykule zawiera również liczne przykłady tego konkretnego problemu.
Korzystanie z metatagu wiąże się również z kilkoma innymi problemami, takimi jak ignorowanie tagu, jeśli nie znajduje się bezpośrednio pod <head>
tagiem lub jeśli przed nim jest zbyt dużo danych (4k). Może również spowodować ponowne przeanalizowanie dokumentu w niektórych wersjach IE, co spowolni renderowanie. Więcej informacji na temat tych problemów można znaleźć w artykule MSDN Najlepsza praktyka: uporządkuj HEAD .
Dodanie nagłówka zgodnego z X-UA
Jeśli używasz .NET i IIS, możesz dodać to do web.config
, możesz 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 usług IIS, możesz to łatwo zrobić w dowolnym języku. Na przykład, oto jak to zrobić w PHP:
header('X-UA-Compatible: IE=edge');
Dopóki X-UA-Compatible
nagłówek będzie obecny w formacie dokumentu HTML5, witryna będzie zawsze działać w trybie najnowszych standardów.
Wyłączanie widoku zgodności Wyłączenie widoku zgodności
może być nadal przydatne. Aby to zrobić, odznacz Display all intranet sites in compatibility view
w Ustawieniach widoku zgodności.
Możesz to wywołać, naciskając, Altaby uzyskać menu.
Edytuj Ta odpowiedź dotyczy również IE9.
alt
aby wywołać pasek narzędzi, jest pod narzędziami -> ustawienia widoku kompatybilności
To działa dla mnie ...
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
X-UA-Compatible
metatag, ale nadal nie uruchamia trybu dokumentu Standardów IE10 jako domyślnej strony, stwierdziłem, że jeśli metatag znajduje się poniżej tagów skryptu lub jest po prostu zbyt daleko od wierzchołka <head>
drzewa DOM, IE10 krzyczy i ustawia tryb dokumentu na Standardy IE8. Więc trzymaj swój IE=edge
metatag blisko <title>
tagu. Nie zawsze jest to prosta poprawka dla witryn Wordpress, gdy nie jest to na stałe zakodowane w pliku szablonu nagłówka. Nie jestem pewien, czy IE11 dba o to, gdzie jest metatag, ale mam nadzieję, że okaże się to pomocne dla kogoś.
Spróbuj dodać następujący tag do głowy
<meta http-equiv="X-UA-Compatible" content="IE=11,IE=10,IE=9,IE=8" />
IE=Edge
zamiast tego
Metatag nie robi nic w przypadku witryn intranetowych, a moim problemem było renderowanie IE10 w trybie zgodności IE10. To, co rozwiązało ten problem, to poszerzenie odpowiedzi @ Jeow i użycie tej wartości w nagłówku http przez dodanie następującego elementu w web.config
obszarze 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ą publiczne witryny, które nie są kierowane na zewnątrz - na przykład pracownik Stackoverflow pracujący w biurze prawdopodobnie zobaczyłby stackoverflow.com w trybie zgodności.
U mnie zadziałało idealnie, gdy wykonałem następujące czynności:
Na http://msdn.microsoft.com/en-us/library/gg699338(v=vs.85).aspx
</html>
Użyłem dokładnego przykładu, który podają w pierwszym pudełku (dodałem brakujący 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, chociaż nie jestem pewien.
Moją sugestią byłoby zastąpienie pustego kodu rzeczywistą treścią (coś prostego) i zobaczenie, co robi.