Pracuję nad witryną intranetową od ponad 6 miesięcy, w których korzystałem z poniższego doctype
metatagu 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 EDGE
ustawienia zadziałało w programie Internet Explorer 9.
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, edge
gdy 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.
Odpowiedzi:
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:
HTML1122: Internet Explorer is running in Enterprise Mode emulating IE8.
źródło
Ten problem jest zazwyczaj spowodowany umieszczeniem adresu URL witryny / intranetu w jednym z:
(z włączonym wyświetlaniem witryn intranetowych w widoku zgodności )
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 .
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:
źródło
Dla tych, którzy tworzą projekt ASP.NET MVC, upewnij się, że dodajesz:
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.
źródło
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.
źródło
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.
źródło
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
źródło
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.
źródło
Dodaj poniższą właściwość do pliku web.config dla witryn IIS. To zadziałało w moim intranecie w IE11.
źródło
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ę.
źródło
Na ile to warte, miałem problem również w IE11:
<!DOCTYPE html>
iIE=Edge
wymienione w pytaniu<head>
elemenciePo jakimś czasie dowiedziałem się, że:
Nagłówek HTTP :
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E)
aleJavaScript :
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)
źródło