Jestem całkiem zdezorientowany. Powinienem być w stanie ustawić
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
a IE8 i IE9 powinny renderować stronę przy użyciu najnowszego silnika renderowania. Jednak właśnie go przetestowałem i jeśli tryb zgodności zostanie włączony gdzie indziej w naszej witrynie, pozostanie włączony dla naszej strony , nawet jeśli powinniśmy go do tego zmuszać.
Jak masz się upewnić, że IE nie używa trybu zgodności (nawet w intranecie)?
FWIW, używam deklaracji HTMLT DocType ( <!doctype html>
).
Oto kilka pierwszych wierszy strony:
<!doctype html>
<!--[if lt IE 7 ]> <html lang="en" class="innerpage no-js ie6"> <![endif]-->
<!--[if IE 7 ]> <html lang="en" class="innerpage no-js ie7"> <![endif]-->
<!--[if IE 8 ]> <html lang="en" class="innerpage no-js ie8"> <![endif]-->
<!--[if (gte IE 9)|!(IE)]><!-->
<html lang="en" class="innerpage no-js">
<!--<![endif]-->
<head>
<meta charset="ISO-8859-1" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
EDYCJA: Właśnie dowiedziałem się, że domyślnym ustawieniem IE8 jest używanie trybu zgodności IE7 dla stron intranetowych. Czy zastąpiłoby to metatag zgodny z X-UA?
Odpowiedzi:
Jeśli chcesz zastąpić ustawienia widoku zgodności IE dla witryn intranetowych, możesz to zrobić w pliku web.config (IIS7) lub za pomocą niestandardowych nagłówków HTTP we właściwościach strony internetowej (IIS6) i ustawić tam zgodność X-UA. Metatag nie zastępuje ustawienia intranetu IE w ustawieniach widoku zgodności, ale jeśli ustawisz go na serwerze hostingowym, zastąpi on zgodność.
Przykład web.config w IIS7:
Edycja : usunąłem
clear
kod tuż przedadd
; kopiowanie i wklejanie było niepotrzebnym niedopatrzeniem. Dobry chwyt, komentatorzy!źródło
<clear />
? Jakie niestandardowe nagłówki są przez to usuwane?<urlCompression...>
przynajmniej dla mnie usuwa to regułę. Ta zasada robi gzipowanie, czego chcę, więc skomentowałem to jasno. Wszelkie dalsze informacje byłyby urocze.<?php header('X-UA-Compatible: IE=edge'); ?>
Zalecane jest rozwiązanie po stronie serwera, jak zaproponował @TimmyFranks w swojej odpowiedzi, ale jeśli trzeba wdrożyć
X-UA-Compatible
regułę na poziomie strony, przeczytaj poniższe wskazówki, aby skorzystać z doświadczenia osoby, która już została spalonaX-UA-Compatible
Tag musi pojawić się zaraz po tytuł w<head>
elemencie. Nie można przed nim umieszczać żadnych innych metatagów, łączy css i wywołań skryptów js.Jeśli na stronie znajdują się komentarze warunkowe (powiedzmy, że znajdują się w
<html>
), należy je umieścić pod, po<head>
.Zespół Html5BoilerPlate napisał o tym błędzie - http://h5bp.com/i/378 Mają kilka rozwiązań.
Jeśli chodzi o widok intranetowy i widok zgodności, ustawienia znajdują się w menu Narzędzia> Ustawienia widoku zgodności.
źródło
X-UA-Compatible
powinien pojawić się jak najwcześniej, prawdopodobnie późniejcharset
. Nie sądzę, że to prawda, że „musi pojawić się bezpośrednio po tytule”.X-UA-Compatible
Tag może pojawić się potitle
,base
a wszelkie inne znaczniki meta bez utraty efektu. To właśnie przetestowałem w IE8. Nie można jednak dodawać żadnych komentarzy warunkowych.Zauważ, że jeśli podajesz go z PHP, możesz użyć następującego kodu, aby go naprawić.
źródło
<!--[if lt IE 7 ]> <html>...
! DZIĘKUJĘ CI! Jesteś posłany przez Boga !!Jak się okazuje, ma to związek z „inteligentnym” wyborem Microsoftu, aby wszystkie witryny intranetowe wymusiły przejście do trybu zgodności, nawet jeśli
X-UA-Compatible
jest ustawiony naIE=edge
.źródło
Mam również ten sam problem z renderowaniem IE9 w standardach dokumentów IE7 dla lokalnego hosta. Próbowałem wielu tagów komentarzy warunkowych, ale bezskutecznie. W końcu właśnie usunąłem wszystkie tagi warunkowe i dodałem metatag natychmiast po głowie, jak poniżej, i działało to jak urok.
Mam nadzieję, że to pomoże
źródło
Nawet jeśli odznaczyłeś opcję „Wyświetlaj strony intranetowe w widoku zgodności” i masz nagłówki odpowiedzi zgodne z X-UA, jest jeszcze jeden powód, dla którego przeglądarka może i tak ustawić domyślnie „Widok zgodności” - Twoje zasady grupy. Spójrz na swoją konsolę, aby zobaczyć następujący komunikat:
Gdzie xxx.xxx to domena Twojej witryny (tj. Test.com). Jeśli to zobaczysz, zasady grupy dla Twojej domeny są ustawione tak, aby każda witryna kończąca się test.com była automatycznie renderowana w trybie zgodności niezależnie od typu dokumentu, nagłówków itp.
Aby uzyskać więcej informacji, zobacz następujący link (wyjaśnia kody HTML): http://msdn.microsoft.com/en-us/library/ie/hh180764(v=vs.85).aspx
źródło
Jak wskazuje NEOSWF powyżej, warunkowe komentarze Paula Irlandzkiego zapobiegają wpływowi metatagu.
Jest tu kilka poprawek ( http://nicolasgallagher.com/better-conditional-classnames-for-hack-free-css/ )
Obejmują one:
Dodanie dwóch klas HTML, użycie nagłówków serwera i dodanie komentarza warunkowego nad typem doc.
W moim ostatnim projekcie postanowiłem usunąć warunkowe komentarze Paula Irisha. Nie podobał mi się pomysł dodania czegokolwiek przed HTML bez wykonywania WIELE testów najpierw i fajnie jest zobaczyć, co zostało ustawione, patrząc tylko na HTML.
W końcu otoczyłem div bezpośrednio po ciele i użyłem komentarzy warunkowych np
Mógłbym to zrobić na całym ciele, ale jest to trudniejsze w przypadku CMS, takich jak Wordpress.
Oczywiście jest to kolejny DIV wewnątrz znaczników, ale tylko dla starszych przeglądarek.
Myślę jednak, że może to być decyzja oparta na projekcie.
Przeczytałem też coś o metatagu charset, który musi pojawić się w pierwszych 1024 bajtach, więc to zapewnia.
Czasami najprostsze i najłatwiejsze do odczytania pomysły są najlepsze i zdecydowanie warto o tym pomyśleć! Dzięki szóstemu komentarzowi do powyższego linku za wskazanie tego.
źródło
X-UA-Compatible
zastąpi tylko tryb dokumentu, a nie tryb przeglądarki i nie będzie działał dla wszystkich witryn intranetowych; w takim przypadku najlepszym rozwiązaniem jest wyłączenie opcji „Wyświetl witryny intranetowe w widoku zgodności” i ustawienie zasad grupy, aby określić, które witryny intranetowe wymagają trybu zgodności.źródło
Dodałem następujące do mojego pliku htaccess, co załatwiło sprawę:
źródło
Dodatkowo, X-UA-Compatible musi być pierwszym metatagiem w sekcji head
Nawiasem mówiąc, poprawna kolejność lub główne tagi główne to:
Tą drogą
źródło
Timmy Franks miał to dla mnie odpowiednie. Właśnie mieliśmy dzisiaj problem, w którym klient miał IE8 w całej firmie, i zmuszał witrynę, którą napisaliśmy dla ich intranetu, do trybu zgodności. Ustawienie „IE-Edge” wydawało się to naprawić.
źródło
Dla Nginx,
ref: https://github.com/h5bp/server-configs/commit/a5b0a8f736d68f7de27cdcb202e32975a74bd2c5
źródło
IE 11 nie pozwala już zastąpić ustawienia widoku zgodności przeglądarki, wysyłając nagłówek ...
Wydaje się, że jedynym sposobem zmuszenia przeglądarki do nieużywania widoku zgodności jest wyłączenie go przez użytkownika w przeglądarce. Nasza jest witryną intranetową, a domyślną opcją IE jest użycie widoku zgodności dla witryn intranetowych. Co za ból!
Udało nam się zapobiec potrzebie zmiany ustawień przeglądarki dla użytkowników IE 9 i 10, ale to już nie działa w IE 11. Nasi użytkownicy IE przechodzą na Chrome, gdzie nie jest to problemem i nigdy nie miał być.
źródło
IE11
nie obsługuje innych trybów zgodności innych niżedge
. Link do oficjalnej dokumentacji . Oznacza to, że nie musimy już używać tego metatagu, aby ukryć przycisk CM na pasku adresu.Byłem w stanie obejść to ładowanie nagłówków przed HTML za pomocą php i działało to bardzo dobrze.
ix.html to treść, którą chciałem załadować po wysłaniu nagłówków.
źródło
Ten sam problem występował w IE11. Żadna z tych odpowiedzi nie rozwiązała mojego problemu. Po nieco kopaniu zauważyłem, że przeglądarka działa w trybie Enterprise . (sprawdź, naciskając klawisz F12 i klikając kartę emulacji, poszukaj menu rozwijanego profilu przeglądarki) Ustawienie zostało zablokowane, nie pozwalając mi na zmianę tego ustawienia.
Po usunięciu CurrentVersion z następującego klucza rejestru mogłem zmienić profil na Pulpit :
Po zmianie trybu na Pulpit odpowiedzi w tym poście będą działać.
źródło
Gdy przeglądarka zostanie otwarta z trybami zgodności, nawet po usunięciu i wyłączeniu konfiguracji wszystkich trybów zgodności z przeglądarki internetowej i Edytora lokalnych zasad grupy, możesz spróbować wyłączyć klucz rejestru.
Zdarzyło mi się to również przy korzystaniu z domeny i subdomeny do połączenia ze stroną serwera. Maszyna jest ograniczona do otwierania w trybie zgodności dla wszystkich subdomen.
WYŁĄCZ TRYB KOMPATYBILNOŚCI DLA INTRANETU
HKEY_LOCAL_MACHINE - OPROGRAMOWANIE - Zasady - Microsoft - Internet Explorer - BrowserEmulation -> IntranetCompalityMode Wartość powinna wynosić 0 (zero) . A także usuń istniejącą nazwę domeny z PolicyList.
W przeciwnym razie możesz dodać nową wartość (DWORD), która zawiera dane o wartości 0 (zero) .
źródło
Miałem ten sam problem po wypróbowaniu wielu kombinacji. Miałem tę notatkę roboczą. Sprawdziłem kompatybilność dla intranetu
źródło
Jeśli używasz stosu LAMP, dodaj go do pliku .htaccess w folderze głównym sieci. Nie trzeba dodawać go do każdego pliku PHP.
źródło