Internet Explorer 11 wyłącza „wyświetlaj witryny intranetowe w widoku zgodności” za pomocą niedziałającego znacznika meta

100

Pracuję nad witryną intranetową od ponad 6 miesięcy, w których korzystałem z poniższego doctypemetatagu zgodności HTML5 i krawędzi, aby zmusić program Internet Explorer do nieemulacji starszej wersji przeglądarki, i to działa dobrze.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8" />
    <title>My title</title>
    <meta http-equiv="X-UA-Compatible" content="IE=EDGE" />
</head>
<body>
</body>
</html>

Powodem, dla którego robię to w ten sposób, jest to, że miejsce, w którym pracuję, używa ustawienia zasad, aby włączyć widok zgodności dla wszystkich witryn intranetowych, a to podejście z użyciem tego EDGEustawienia zadziałało w programie Internet Explorer 9.

Ustawienie widoku zgodności witryny intranetowej

Ponad miesiąc temu zostałem zaktualizowany do przeglądarki Internet Explorer 11 i strona nadal działała zgodnie z oczekiwaniami.

Dzisiaj przestało to działać zgodnie z oczekiwaniami, nie mogę powiedzieć na pewno, ale myślę, że polityka wymuszająca widok zgodności nie była włączona w IE11 i teraz jest ... a ponieważ została włączona, metatag zgodności nie jest już robi to, czego się oczekuje, a ta strona działa w trybie Enterprise, który emuluje IE8.

Czy ktoś wie, jak to naprawić i wymusić używanie IE11 w witrynie intranetowej, gdy wymuszana jest zgodność „Tryb korporacyjny”? i nie można go wyłączyć w ustawieniach przeglądarki?

EDYTOWAĆ

Właśnie próbowałem dodać niestandardowy nagłówek w moim web.config, jak wyjaśniono w tej odpowiedzi https://stackoverflow.com/a/18257208/98706

i to nie zadziałało. Nadal pojawia się poniższy komunikat w konsoli paska narzędzi programisty

HTML1122: Internet Explorer is running in Enterprise Mode emulating IE8.

To tak, jakby wersja 8 była traktowana jako, edgegdy to ustawienie zgodności z intranetem jest włączone w IE11.

Ten post: https://www.leapinggorilla.com/Blog/Read/1016/ie-ate-my-css---disecting-compatability-mode wyjaśnia to dobrze, nie próbowałem jeszcze ustawić tego nagłówka za pomocą kodu i nasi użytkownicy nie mają możliwości zmiany ustawień swojej przeglądarki. Żadna inna zmiana jeszcze nie zadziałała.

AKTUALIZACJA

Proszę zapoznać się z moim komentarzem do tego postu o tym, jaka jest różnica między trybem Enterprise a trybem zgodności, ponieważ jest ważny.

Drogie
źródło
Tryb korporacyjny różni się od widoku zgodności, zobacz stackoverflow.com/a/26463309/98706, aby dowiedzieć się, jak go wyłączyć, ale w moim przypadku nie jest to tak proste, jak możliwość jego wyłączenia, chciałem go zastąpić dla określonych witryn intranetowych używając metatagu, ale to nie zadziałało, nie próbowałem ponownie, ponieważ nasze witryny znajdują się teraz na białej liście.
Drogo

Odpowiedzi:

93

Upewnić się:

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

to pierwszy <meta>tag na Twojej stronie, w przeciwnym razie IE może go nie respektować.

Alternatywnie problem może polegać na tym, że IE używa trybu przedsiębiorstwa dla tej witryny:

  • Twoje pytanie dotyczyło tego, że konsola wyświetla: HTML1122: Internet Explorer is running in Enterprise Mode emulating IE8.
  • Jeśli tak, może być konieczne wyłączenie trybu korporacyjnego (lub podobnego ) lub wyłączenie go dla tej witryny z menu Narzędzia w IE.
  • Jednak tryb Enterprise powinien teoretycznie zostać zastąpiony tagiem kompatybilnym z X-UA, ale IE może mieć błąd ...
wróbel
źródło
Tak, już to zrobiłem, ponieważ niestety nie zadziałało :(
Drogie
Możliwe, że tryb Enterprise jest włączony dla tej witryny (na podstawie twojego pytania) ... Zaktualizowałem moją odpowiedź, daj mi znać, jeśli to pomoże
sparrowt
2
„Tryb korporacyjny” i „Widok zgodności” są różne, chociaż podobne. Nawet jeśli zaznaczono opcję „Wyświetlaj witryny intranetowe w widoku zgodności”, tag X-UA-Compatible powinien zastąpić to ustawienie. Jednak tryb korporacyjny może to zastąpić ... Czy widzisz ikonę trybu korporacyjnego ( media.askvg.com/articles/images5/ ... ) na swojej stronie?
sparrowt
1
A co powie, jeśli naciśniesz F12 i spojrzysz na kartę emulacji? Powinien powiedzieć, dlaczego używa trybu dokumentu. Myślę, że wybierasz tryb Enterprise, a nie widok zgodności.
sparrowt
19
Tak jest! @ # $ Irytujące, marnujące setki tysięcy godzin twórców stron internetowych na całym świecie.
Sam Watkins
19

Ten problem jest zazwyczaj spowodowany umieszczeniem adresu URL witryny / intranetu w jednym z:

  • Lista trybów zgodności
  • Strefa intranetowa programu Internet Explorer
    (z włączonym wyświetlaniem witryn intranetowych w widoku zgodności )
  • Lista trybów przedsiębiorstwa

W sieciach korporacyjnych te ustawienia widoku zgodności są często kontrolowane centralnie za pośrednictwem zasad grupy . W twoim przypadku winowajcą wydaje się tryb Enterprise .

IE 11 Enterprise Mode

Niestety ustawienie META X-UA-Compatible nie zastąpi tego.

Dla użytkowników końcowych

Czasami jedynym sposobem, aby użytkownicy końcowi mogli to zmienić, jest naciśnięcie klawisza F12 i zmiana trybu dokumentu na karcie Emulacja . Jednak to ustawienie nie jest trwałe i może zostać przywrócone po zamknięciu Narzędzi dla programistów.

Możesz także spróbować wykluczyć swoją witrynę ze strefy Intranet. Ale lista domen należących do strefy intranetu jest zwykle również kontrolowana przez politykę grupową, więc szansa na to działanie jest niewielka.

Aby zobaczyć listę domen należących do strefy Intranet, przejdź do:

Narzędzia -> Opcje internetowe -> Bezpieczeństwo -> Witryny -> Zaawansowane

Jeśli lista zawiera Twoją subdomenę i jest wyszarzona, nie będziesz mógł zmienić widoku zgodności, dopóki administrator sieci na to nie zezwoli.

Naprawdę musisz skontaktować się z administratorem sieci, aby zezwolić na zmianę ustawień widoku zgodności w zasadach grupy.

Dla administratorów sieci

Ładowanie witryny przy otwartych Narzędziach dla programistów (F12) często zgłasza powód przełączenia IE na starszy tryb.

Wszystkie 3 ustawienia wymienione powyżej są zwykle kontrolowane za pomocą zasad grupy, chociaż czasami mogą być zastąpione na komputerach użytkowników.

Jeśli problem dotyczy trybu przedsiębiorstwa (jak wydaje się mieć miejsce w przypadku oryginalnego plakatu), pomocne mogą być następujące dwa artykuły:

rustyx
źródło
Rozszerzyłem twoją wspaniałą odpowiedź o więcej szczegółów, które odkryłem podczas ostatnich badań. Mam nadzieję, że wszystko w porządku.
Simon East
8

Dla tych, którzy tworzą projekt ASP.NET MVC, upewnij się, że dodajesz:

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

na swojej stronie Układ (szablon). Właśnie spędziłem dwie godziny na debugowaniu i poprawianiu, tylko po to, aby zdać sobie sprawę, że dodałem tylko ten metatag do moich stron podrzędnych. Jak tylko dodałem go do mojej strony układu, przeglądarka ładowała się idealnie w trybie EDGE.

Jason Marsell
źródło
Mój problem był związany z nowym trybem Enterprise w IE11, który zmusza przeglądarkę do emulacji IE8. To nie to samo, co tryb zgodności, do którego zastępowania służy ten metatag. Używałem tego poprawnie.
Drogo
Mój komentarz miał pomóc innym z tymi samymi symptomami, którzy budują witryny w ASP.NET MVC. Nie zwracałem się do ciebie konkretnie.
Jason Marsell
Znacznik meta będzie działał (w przypadku problemów z trybem zgodności, a nie z trybem przedsiębiorstwa) również w przypadku witryn innych niż .NET / MVC, przy okazji, nie jest specyficzny dla ASP.NET
Dan Harris
4

Zaznaczona odpowiedź jest prawidłowa. Jednak Pricey, powinieneś skontaktować się z grupami administratorów AD i pulpitu. Nadużywają listy witryn IE11 Enterprise Mode. Firma Microsoft NIE zamierza w ogóle używać go we wszystkich witrynach intranetowych w organizacji. Oznaczałoby to propagowanie istniejącego ustawienia „renderuj wszystkie witryny intranetowe w trybie zgodności”, które jest zmorą rozwoju korporacyjnych witryn internetowych na całym świecie.

Ma to być zaimplementowana jako „Czarna lista”, z kilkoma witrynami, które faktycznie wymagają starszego trybu przeglądarki, wymienionymi na liście Tryb przedsiębiorstwa wraz z określonymi wymaganiami renderowania. Wszystkie inne witryny w Twojej organizacji mogą wtedy korzystać z Edge. Osoby w Twojej organizacji, które wdrożyły go wraz ze wszystkimi witrynami intranetowymi na początku, całkowicie źle zrozumiały, w jaki sposób należy wdrożyć tryb korporacyjny.

ch1nmuzak
źródło
Tak, zdecydowanie powinni to robić, ale niestety nie mam nic do powiedzenia w tej sprawie, ale zostało to z nimi poruszone.
Drogo
1

Pytanie jest trochę stare, ale właśnie rozwiązałem bardzo podobny problem. Mamy tutaj kilka witryn intranetowych, w tym tę, za którą jestem odpowiedzialny, a inne wymagają trybu zgodności lub ulegają awarii. Z tego powodu reguły witryn domyślnie IE w trybie zgodności w witrynach intranetowych. Uaktualniam własne rzeczy i już ich nie potrzebuję; w rzeczywistości niektóre funkcje, których próbuję użyć, nie wyglądają dobrze w trybie zgodności. Tak jak ty używam metatagu IE-Edge.

IE zakłada, że ​​strony internetowe bez w pełni kwalifikowanego adresu są intranetem i odpowiednio działa. Mając to na uwadze, po prostu zmieniłem powiązania w usługach IIS, aby nasłuchiwać tylko w pełni kwalifikowanego adresu, a następnie utworzyłem fałszywą witrynę sieci Web, która nasłuchiwała niekwalifikowanego adresu. Drugi przekierowuje cały ruch na w pełni kwalifikowany adres, dzięki czemu IE uważa, że ​​jest to witryna zewnętrzna. Witryna renderuje się poprawnie z zaznaczonym polem Tryb zgodności w witrynach intranetowych lub bez niego.

Mike Anderson
źródło
zobacz: stackoverflow.com/questions/2518256/ ... jeśli masz dostęp do web.config.
fontophilic
Widziałem to pytanie wcześniej, ale myślę, że pomyliłem wiersz nagłówka HTTP z wierszem META i pomyślałem, że już go wypróbowałem. Działało dobrze, kiedy już to wyprostowałem. Dzięki za wskazanie mi tego.
Mike Anderson
Próbowałem zastosować to samo ustawienie zgodności EDGE w konfiguracji sieciowej i nie zadziałało to dla mnie, jedynym sposobem, w jaki udało mi się to uruchomić, jest żądanie dodania naszych określonych witryn do białej listy, aby zostały zignorowane z nowej Tryb IE11 Enterprise, który wydaje się być czymś innym niż tryb zgodności. W żadnym wypadku nie jest to dla mnie przyjemne rozwiązanie ze względu na pętle, przez które muszę przeskakiwać, aby to zrobić za każdym razem.
Drogi
Wygląda na to, że poszedłeś tą samą drogą co ja. Muszę zrobić 2 rzeczy. 1 to ustawienie EDGE w tagu META strony. Możesz to zrobić w pliku web.config (lub nie; nie wiem), ale zrobiłem to na stronie wzorcowej witryny. Drugim było dodanie niestandardowego nagłówka HTTP do pliku web.config.
Mike Anderson
1

To stary problem z pewnymi dobrymi informacjami. Ale właśnie odkryłem, że użycie FQDN wyłącza tryb Compat w IE 9 - 11. Przykład. Mam problem ze
zgodnością z http: // lrmstst01: 8080 / JavaWeb / login.do,
ale problemy znikają z
http://lrmstst01.mydomain.int:8080/JavaWeb/login.do
Uwaga: .int jest częścią nasza domena wewnętrzna

Dean P
źródło
Te linki są nieprawidłowe. Są używane jako przykład adresu URL z samą nazwą komputera w porównaniu z adresem z FQDN.
Dean P
2
Wskazówka dla profesjonalistów: Example.com istnieje właśnie w tym celu
Podstawowy
To wciąż jest problem, a ten komentarz nic nie wnosi do rozwiązania.
Diana
0

Przenieś go do strefy Zaufane witryny, dodając go do listy Zaufane witryny lub do ustawienia lokalnego. Spowoduje to przeniesienie go poza strefę intranetu i nie będzie renderowany w Compat. Widok.

Greg C.
źródło
Ps Wiem, że to działa, ponieważ to właśnie robimy w mojej firmie dla nowszych produktów opartych na przeglądarkach, które nie są napisane za pomocą znaczników X-UA, aby wymusić renderowanie tak, jak tego chcą.
Greg C.
Biorąc pod uwagę, że jest to prawdopodobnie firma obejmująca całą firmę, Twoja odpowiedź musiałaby zostać zastosowana na komputerze każdego użytkownika, co nie jest idealne.
MattD
0

Dodaj poniższą właściwość do pliku web.config dla witryn IIS. To zadziałało w moim intranecie w IE11.

<system.webServer>
  <httpProtocol>
    <customHeaders>
      <clear />
      <add name="X-UA-Compatible" value="IE=edge" />
    </customHeaders>
  </httpProtocol>
</system.webServer> 
user942620
źródło
Proszę zobaczyć moją aktualizację na bilecie, tryb korporacyjny i tryb zgodności to dwie różne rzeczy
Drogi
0

Rozwiązałem ten problem, przekierowując użytkownika do FQDN serwera obsługującego intranet.

IE prawdopodobnie używa najgorszego na świecie algorytmu do wykrywania witryn „intranetowych”… rzeczywiście, określenie server.domain.tld rozwiązuje problem za mnie.

Tak, dobrze czytasz, IE wykrywa witryny intranetowe nie na podstawie prywatnego adresu IP, jak zrobiłby to każdy programista, który słyszał o TCP / IP, nie, po części „hosta” adresu URL, jeśli nie ma części domeny, musi być wewnętrznym.

Przerażające jest wiedzieć, że programiści IE nie rozumieją najbardziej podstawowych pojęć TCP / IP.

Zwróć uwagę, że miało to miejsce u dużego klienta korporacyjnego, zmuszanie go do zmiany GPO jest dla ciebie jak próba przesunięcia Alp na wschód o 4 metry, nie zdarzy się.

karpia
źródło
IE prawdopodobnie wyszukuje DNS i zna z tego adres IP. Ponieważ jest to MS, prawdopodobnie mógłby zrobić AD, ale DNS ma więcej sensu.
smoore4
@SQLDBA ujemny, jeśli podasz adres IP, powiedzmy 10.0.0.1, host NIE zostanie wykryty jako witryna „intranetowa” ... nie ma nic wspólnego z DNS, co masz na myśli z AD? Czy masz na myśli to, że łączy się z AD i wyszukuje tam hosta? Nie ma sensu, dlaczego miałby to zrobić? Z drugiej strony nie bez powodu są oni firmą Microsoft ™.
thecarpy
0

Na ile to warte, miałem problem również w IE11:

  • Byłem nie w trybie Enterprise.
  • Zaznaczono opcję „Wyświetlaj witryny intranetowe w widoku zgodności”.
  • Miałem wszystkie ustawienia <!DOCTYPE html>i IE=Edgewymienione w pytaniu
  • Nagłówek meta był rzeczywiście pierwszym elementem w <head>elemencie

Po jakimś czasie dowiedziałem się, że:

  • nagłówek User Agent wysłany do serwera to IE7, ale ...
  • wartość JavaScript to IE11!

Nagłówek HTTP :

User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E) ale

JavaScript :

window.navigator.userAgent === 'Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E; rv:11.0) like Gecko'

Więc skończyło się na sprawdzaniu po stronie klienta.

A tak przy okazji, sprawdzanie klienta użytkownika nie jest już zalecane. Zobacz https://developer.mozilla.org/en-US/docs/Web/HTTP/Browser_detection_using_the_user_agent (ale może być dobry przypadek)

Yann Vo
źródło