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


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

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

</body>
</html>

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


119
2017-11-08 07:01


pochodzenie




Odpowiedzi:


Internet Explorer przyjmuje założenie, że większość stron WWW została napisana w celu kierowania na wcześniejsze wersje IE i sprawdza typ dokumentu, metatagi i kod HTML, aby określić najlepszy tryb zgodności (czasami nieprawidłowo). Nawet z dokumentem HTML5 IE nadal umieszcza twoją witrynę w trybie zgodności, jeśli jest to strona intranetowa.

Aby upewnić się, że Twoja witryna zawsze korzysta z najnowszego trybu standardów, możesz się upewnić Display intranet sites in Compatibly jest wyłączony. Jednak musisz to zrobić na każdym komputerze lokalnym na serwerze sieciowym (instrukcje znajdują się 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 to zauważyć używanie metatagu nie działa!.

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

W całym MSDN wspomniano, że używanie nagłówka hosta lub metatagu powinno nawet być nadrzędne intranet sites. Artykuł Zrozumienie trybów zgodności w przeglądarce internetowej 8 mówi co następuje.

Duża liczba wewnętrznych witryn biznesowych jest zoptymalizowanych pod kątem programu Internet Explorer 7, więc ten wyjątek domyślny zachowuje tę zgodność.   ...   Ponownie, jeśli znacznik Meta lub nagłówek http zostanie użyty do ustawienia trybu zgodności z dokumentem, zastąpi on te ustawienia.

Jednak w praktyce to nie zadziała, jedyną dostępną opcją jest użycie nagłówka hosta. W sekcji komentarzy artykułu pokazano również liczne przykłady tego dokładnego problemu.

Używanie tagu Meta ma również kilka innych problemów, takich jak ignorowanie tagu, jeśli nie znajduje się on bezpośrednio pod tagiem <head> tag lub jeśli jest za dużo danych przed nim (4k). Może także spowodować, że dokument zostanie poddany ponownej analizie w niektórych wersjach IE, co spowolni renderowanie. Więcej informacji na temat tych problemów można znaleźć w artykule MSDN Najlepsza praktyka: Zdobądź HEAD w porządku.

Dodanie nagłówka zgodnego z X-UA 

Jeśli używasz .net i IIS, możesz dodać to do pliku 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 korzystasz z usług IIS, możesz to zrobić w dowolnym języku, na przykład tutaj: jak to zrobić w php:

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

Dopóki nagłówek zgodny z X-UA jest obecny z dokumentem html5, strona zawsze będzie działała w trybie najnowszych standardów.

Wyłączanie widoku zgodności
Nadal może być przydatne wyłączenie widoku zgodności. Aby to zrobić, usuń zaznaczenie Display all intranet sites in compatibility view w ustawieniach widoku zgodności.

Compatibility View Settings

Możesz to poprawić, uderzając alt aby uzyskać menu

enter image description here

Edytować Ta odpowiedź dotyczy również IE9


239
2017-11-08 10:31



Wybacz moją ignorancję, ale jak dostać się do tego arkusza ustawień? Sprawdziłem ustawienia przeglądarki internetowej, kliknąłem prawym przyciskiem myszy widok zgodności w pasku adresu - nic. - firedev
@Nick use alt aby wyświetlić pasek narzędzi, jest pod narzędziami -> ustawienia widoku zgodności - Daniel Little
Och, dziękuję, wygląda na to, że to rozwiązałeś. Zastanawiają się, dlaczego w ogóle to zrobili. - firedev
+1000;). SO powinno zmusić każdy OP, aby zobaczył tę odpowiedź, gdy mają one znacznik [IE] i słowo "zgodny" w swoim pytaniu, nawet zanim faktycznie opublikują to pytanie. - Teemu
Próbowałem dodać niestandardową sekcję nagłówków do pliku web.config projektu. Wygląda na to, że ustawienie nie zastępuje ustawienia IE w przypadku korzystania z widoku zgodności w witrynach intranetowych. - DomenicDatti


To działa dla mnie ..

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

25
2018-05-24 09:41



N.B. jak mówi Lavinski, "metatak nie robi nic dla witryn intranetowych". - Nathan
Za to, co jest warte, dla hostowanej strony internetowej (strony nieinternetowej), która ma X-UA-Compatible metatag, ale wciąż nie uruchamia trybu dokumentu standardów IE10 jako domyślnego strony, stwierdziłem, że jeśli metatag znajduje się poniżej znaczników skryptu lub jest zbyt daleko od góry <head> w drzewie DOM IE10 płacze i ustawia tryb dokumentu na standardy IE8. Tak więc, zachowaj swoje IE=edge metatag zamknij <title> etykietka. Nie zawsze jest to prosta poprawka dla witryn Wordpress, gdy nie jest ona zakodowana na stałe 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ś. - purefusion
W przypadku ślepej kopii i pastorów, takich jak ja, brakuje tagu zamykającego. . <meta http-equiv = "Kompatybilny z X-UA" content = "IE = edge"> </ meta> - John Newman
Trzeba tylko zamknąć metatag, jeśli używasz typu dokumentu XHTML - Andy Brudtkuhl
Również ten tag musi być pierwszym tagiem wewnątrz <head> - Chris Gunawardena


Spróbuj dodać następującą etykietę do głowy

<meta http-equiv="X-UA-Compatible" content="IE=11,IE=10,IE=9,IE=8" />

10
2017-11-08 07:05



To powinno być IE=Edge zamiast - Daniel Little
Istnieje jednak ryzyko, że przyszłe wersje IE zrobią coś złego i zepsują twoją witrynę - Jeow Li Huan
Nie, to nie jest ryzyko, jeśli podążysz za specyfikacją, nie widzisz ludzi robiących to dla chrome. - Daniel Little
Ten tag musi być pierwszym tagiem wewnątrz <head> - Chris Gunawardena
Edycja tej odpowiedzi pokazuje, dlaczego nie jest to dobry pomysł. Przyjęta odpowiedź jest najlepszym rozwiązaniem. - David Granado


Metatag nie robi nic dla witryn intranetowych, a moim problemem było renderowanie IE10 w trybie zgodności IE10. Zajęło mi to rozwiązanie problemu @ Odpowiedź Jeowa dalej i używając tej wartości w nagłówku http, dodając do web.configw ramach 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>

Do 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 stackoverflow.com w trybie zgodności.


2
2018-03-06 02:08





Udało mi się to doskonale, kiedy to zrobiłem:

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

Użył dokładnego przykładu, który dostarczył w pierwszym polu (dodał brakujący </html> na dole), otworzyłem go w IE10, a standardy zostały wymuszone, myślę, że możesz potrzebować rzeczywistej zawartości w html, aby wymusić na standardach nie pewne.

Moja sugestia to zastąpienie pustego kodu rzeczywistą treścią (coś prostego) i zobaczenie, co robi.


1
2018-02-25 17:17