Domyślnie IE8 zmusza strony intranetowe do trybu zgodności. Próbowałem zmienić nagłówek meta na IE8, ale nie potwierdza on nagłówka meta i po prostu korzysta z ustawień przeglądarki. Czy ktoś wie, jak to wyłączyć?
200
Domyślnie IE8 zmusza strony intranetowe do trybu zgodności. Próbowałem zmienić nagłówek meta na IE8, ale nie potwierdza on nagłówka meta i po prostu korzysta z ustawień przeglądarki. Czy ktoś wie, jak to wyłączyć?
Odpowiedzi:
Możliwe jest zastąpienie trybu zgodności w intranecie.
W przypadku IIS wystarczy dodać poniższy kod do pliku web.config. Pracował dla mnie z IE9.
Odpowiednik dla Apache:
A dla nginx:
I dla express.js:
źródło
Michael Irigoyen ma rację, ALE jest to trochę bardziej skomplikowane ...
jeśli korzystasz ze wspaniałego bojlera autorstwa Paula Irisha, będziesz mieć coś takiego: -
To NIE będzie działać zgodnie z oczekiwaniami i wymusi w IE tryb zgodności w środowisku intranetowym, jeśli zaznaczysz opcję „Wyświetl strony intranetowe w widoku zgodności”. Musisz usunąć warunkowe komentarze IE, aby zapobiec trybowi zgodności z intranetem.
Tak więc następujący kod będzie działał:
Zasadniczo, jeśli uruchomisz warunkowe komentarze IE przed
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
instrukcją, będziesz zmuszony do przejścia do trybu zgodności w środowisku intranetowym, jeśli używasz IE9 z ustawieniami domyślnymi.AKTUALIZACJA - INFORMACJE DODATKOWE: Należy jednak pamiętać, że istnieje sztuczka, która sprawi, że HTML-Boilplate będzie działał:
Dodaj pusty, warunkowy komentarz przed DOCTYPE. I uwaga, jak również, że gdy robisz to , to można też dodawać komentarzy warunkowych wokół
X-UA-Compatible
dyrektywy, dzięki czemu strona HTML5 ważne jak dobrze. Na przykład:Wpis na blogu zainspirowany pierwszą częścią tej odpowiedzi zawiera więcej szczegółów. A tak na marginesie: jak wspomniano w tym blogu, można również wymienić komentarza warunkowego przed DOCTYPE z pół warunkowym komentarzu z żadnym warunkiem :
<!--[]-->
. Tak więc tak:Należy jednak pamiętać, że ten drugi wariant (
<--[]--><!DOCTYPE html>
), jak wyjaśniono np. W tej odpowiedzi na inne pytanie , aktywuje dobrze znany problem, który - w przypadku starszych wersji IE bez obsługiX-UA-Compatioble
(czytaj: dla IE7 i IE6) - spowoduje włączenie przeglądarki do dziwaczny tryb.źródło
Po rozwinięciu menu „Narzędzia” i wybraniu „Ustawienia widoku zgodności” W tym oknie dialogowym na dole znajduje się ustawienie „Wyświetlaj strony intranetowe w trybie zgodności”. Jeśli odznaczysz to, powinno to rozwiązać problem, a IE użyje trybu opartego na DOCTYPE.
źródło
W odpowiedziach na to pytanie jest pewien zamieszanie.
Najważniejszą odpowiedzią jest obecnie rozwiązanie po stronie serwera, które ustawia flagę w nagłówku http, a niektóre komentarze wskazują, że rozwiązanie wykorzystujące metatag po prostu nie działa.
Myślę, że ten wpis na blogu zawiera ładny przegląd sposobu korzystania z metainformacji dotyczących zgodności. Z mojego doświadczenia wynika, że opisano: http://blogs.msdn.com/b/cjacks/archive/2012/02/29/using-x- Kompatybilny z-do-tworzenia-trwałych-aplikacji-korporacyjnych.aspx
Główne punkty:
Jedną ważną kwestią (i myślę, że z tego punktu wynika wiele nieporozumień) jest to, że IE ma dwie „klasy” trybów:
Tryb dokumentu określa mechanizm renderowania (sposób renderowania strony internetowej).
Tryb przeglądarki określa, co ciąg IE użytkownika-agenta (UA) wysyła do serwerów, co domyślnie IE trybu dokumentu i jak IE ocenia komentarze warunkowe.
Więcej informacji o trybie dokumentu vs. trybie przeglądarki można znaleźć w tym artykule: http://blogs.msdn.com/b/ie/archive/2010/06/16/ie-s-compatibility-features-for- site-developers.aspx? Przekierowano = true
Z mojego doświadczenia wynika, że metadane zgodności będą miały wpływ tylko na tryb dokumentu . Więc jeśli polegasz na wykrywaniu przeglądarki, to ci nie pomoże. Ale jeśli używasz funkcji wykrywania funkcji, powinna to być właściwa droga.
Polecam więc użycie metatagu (na stronie HTML) przy użyciu tej składni:
Uwaga: podaj listę trybów przeglądarki, które przetestowałeś.
Wpis na blogu odradza również korzystanie z EmulateIEX. Oto cytat:
źródło
Wypróbuj ten metatag:
Powinien zmusić IE8 do renderowania w trybie standardowym IE8, nawet jeśli „Wyświetl strony intranetowe w widoku kompatybilności” jest zaznaczone [dla intranetu lub wszystkich stron], wypróbowałem to samo w IE 8.0.6
źródło
Nasz administrator systemu rozwiązał ten problem, odznaczając pole globalnie dla naszej organizacji. Użytkownicy nawet nie musieli się wylogowywać.
źródło
Znalazłem działającą odpowiedź, która pozwala zastąpić zaznaczony widok zgodności z intranetem. Po prostu dodaj w zdarzeniu OnInit swojej strony ten wiersz (nie potrzebujesz meta lub web.config customHeader):
źródło
Spróbuj umieścić następujące informacje w nagłówku:
Dzięki uprzejmości Paula Irish HTML5 Boilerplate (ale działa również w XHTML Transitional).
źródło
Byłem w stanie zastąpić tryb zgodności, określając metatag jako PIERWSZĄ TAGĘ w sekcji head, nie tylko jako pierwszy metatag, ale jako i tylko jako BARDZO PIERWSZA TAGA .
Dzięki @ stefan.s za umieszczenie mnie w doskonałej odpowiedzi. Przed przeczytaniem miałem:
TO NIE DZIAŁAŁO
usunęłam tag link z drogi i zadziałało
TO DZIAŁA :
Tak więc klient IE8 ustawiony do używania zgodności renderuje stronę jako tryb standardowy IE8 - treść = „IE = 9” oznacza używanie najwyższego standardu dostępnego do IE9 włącznie.
źródło
To nie jest dokładnie rozwiązanie, ale uważam, że jest najlepsze. Na naszych stronach intranetowych mówimy ludziom, że dostęp do nich może mieć tylko Firefox, nie podoba nam się to tutaj użytkownicy IE. Sprawdź agenta użytkownika po stronie serwera lub klienta i odmów mu dostępu z IE. Jestem programistą .NET.
źródło
Walczyłem z tym problemem i chciałem pomóc w dostarczeniu unikalnego rozwiązania i wglądu.
Niektóre frameworki oparte na AJAX wstrzykną skrypty javascript i arkusze stylów na początku,
<head>
a zrobienie tego wydaje się uniemożliwiać prawidłowe funkcjonowanie dobrze ustalonego metatagu. W tym przypadku odkryłem, że bezpośrednie wstrzykiwanie do nagłówka odpowiedzi HTTP, podobnie jak odpowiedź Andrasa Csehi rozwiąże problem.Jednak dla tych, którzy używają serwletów Java, dobrym sposobem na rozwiązanie tego problemu jest użycie filtru ServletFilter.
źródło
Możemy rozwiązać ten problem w środowisku Spring-Apache-tomcat, dodając jedną linię w metodzie RequestInterceptor -
Odsyłacz z - Jak utworzyć filtr i zmodyfikować nagłówek odpowiedzi Obejmuje on sposób rozwiązania tego problemu za pomocą RequestInterceptor (Spring).
źródło
Jeśli chcesz, aby Twoja witryna wymusiła tryb standardów IE 8, użyj tego metatagu wraz z prawidłowym DOCTYPE:
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE8" />
Zwróć uwagę na wartość „EmulujIE8” zamiast zwykłego „IE8”.
Zdaniem deweloperów IE powinno to oznaczać: „Wyświetl standardy DOCTYPE w trybie norm IE8; Wyświetl dziwactwa DOCTYPE w trybie dziwactw. Użyj tego znacznika, aby zastąpić widok zgodności na komputerach klienckich i wymusić standardy na standardy IE8”.
Więcej informacji na temat tego postu na blogu IE: http://blogs.msdn.com/b/ie/archive/2008/08/27/introducing-compatibility-view.aspx
źródło
To pytanie jest kopią trybu Force „Internet Explorer 8” w intranecie .
Odpowiedzi tam wskazują, że nie można wyłączyć widoku zgodności (po stronie serwera) - https://stackoverflow.com/a/4130343/24267 . Z pewnością wydaje się, że tak jest, ponieważ żadna z sugestii, które wypróbowałem, nie zadziałała. W IE8 „Tryb przeglądarki” zostaje ustawiony na widok zgodności z Internet Explorerem 8 bez względu na to, jaki rodzaj nagłówka zgodnego z X-UA wysyłasz.
Musiałem zrobić specjalną obsługę dla IE7 i trybu zgodności, co spowodowało, że przeglądarka wyświetla się przy użyciu IE8, ale zgłosiła, że to IE7, zepsuła mój kod. Tak naprawiłem swój kod (wiem, że to okropny hack i powinienem testować funkcje, a nie wersje przeglądarki):
źródło
Miałem ten sam problem. Działało za pomocą
źródło
Dodaj to wewnątrz tagu strony (kierując na żądaną wersję IE):
Uwaga: NIE zmieni to faktu, że przeglądarka mówi, że jest w trybie zgodności (zwanym trybem przeglądarki), ale strona będzie renderowana w trybie standardów IE8. Jeśli nadal NIE wyświetla się tak, jak chcesz, to prawdopodobnie dlatego, że masz JavaScript, który błędnie sprawdza wersję IE. Zobacz następujący post na blogu, aby ustalić, z której właściwości należy wyłączyć klucz, ponieważ nawet jeśli ustawisz metatag zgodny z X-UA, ciąg agenta użytkownika nadal będzie mówił MSIE 7.0 .
W moim przypadku dla poprawki musiałem dodać kontrolę trybu zgodności IE7. Zrobiłem to za pomocą prostego kodu javascript:
źródło
Dla każdego, kto to czyta i chce wyłączyć to przez GPO dla wszystkich użytkowników, jest to ustawienie:
Konfiguracja komputera / Szablony administracyjne / Składniki systemu Windows / Internet Explorer / Widok zgodności / Włącz tryb normalny programu Internet Explorer dla lokalnego intranetu
chociaż edycja web.config naprawiła to dla mnie.
źródło
Zmień nagłówki w .htaccess
Znaleźć rozwiązanie tego problemu tutaj: https://github.com/h5bp/html5-boilerplate/issues/378
źródło
Komentarz Stefana S na temat trybu dokumentu i trybu przeglądarki był bardzo istotny dla mojego problemu.
Mam na stronie metadane X-UA-Content, ale po stronie klienta testowałem wersję przeglądarki za pośrednictwem
navigator.appVersion
. Ten test nie odzwierciedla metadanych, ponieważ daje tryb przeglądarki, a nie tryb dokumentu.Odpowiedzią było dla mnie przetestowanie
document.documentMode
czegoś takiego:Teraz mój metatag X-UA-Content odzwierciedla się w teście przeglądarki.
Dlaczego robię takie marne rzeczy, jak testowanie przeglądarki? Prędkość. Różne moje dodatki jQuery, takie jak tableorter, są po prostu zbyt wolne na IE6 / 7 i chcę je wyłączyć. Nie jestem pewien, czy testowanie funkcji przeglądarki może pomóc mi rozwiązać to inaczej.
źródło