Po co już korzystać z przeglądarki IE = Edge zgodnej z X-UA?

95

Ostatnio wziąłem udział w kilku kursach online i nadal widzę, że niektórzy instruktorzy domyślnie dodają następujący metatag na początku swoich dokumentów:

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

Wydaje się, że jest to tak samo ważne i użyteczne jak <meta charset="UTF-8">.

Ale dlaczego?

Według dokumentacji Microsoft Modern.ie jest to „najlepsza praktyka”, która „zapewnia, że ​​Internet Explorer używa najnowszego silnika”. Ok, w porządku.

Jednak, jeśli się ten schemat na MSDN to wyraźnie pokazuje, że dokument bez `Informacje X-UA-Compatible jest przekazywany do„Compatibility View”preferencji użytkownika, a jeśli to się nie ustawiono następnie wykonaj deklarację DOCTYPE! .

Innymi słowy, jeśli użytkownik nie ma określonych ustawień widoku zgodności, IE będzie po prostu podążać za Twoim! DOCTYPE i użyje trybu najnowszych standardów przeglądarki do renderowania ... Nie ma potrzeby wydawania żadnych X-UA-Compatible IE=Edgeoświadczeń.

Jak mówi MSDN: „ Użyj deklaracji typu dokumentu HTML5, aby włączyć tryb krawędziowy ”.

Więc w jakich okolicznościach jest to X-UA-Compatible IE=Edgepotrzebne?

Chuck Le Butt
źródło

Odpowiedzi:

153

Jak wskazuje odpowiedź @Davida, jeśli nie hostujesz witryny w strefie „Lokalny intranet”, nie ma powodu, aby umieszczać ją <meta http-equiv="X-UA-Compatible" content="IE=edge">na swoich stronach internetowych i (zgodnie z zaleceniami najlepszych praktyk firmy Microsoft ) absolutnie nie ma powodu, aby umieszczać ją w HTML. (Należy go umieścić w konfiguracji serwera lub w nagłówkach witryny - nie w samym kodzie HTML).

Jeśli rozważasz użycie X-UA-Compatibledowolnego miejsca w swoim projekcie, pamiętaj, że widok zgodności dotyczy tylko przeglądarek IE8, 9 i 10. Został wprowadzony tylko w IE8 i został wyłączony w IE11.

Należy również pamiętać, że IE11 jest obecnie jedyną oficjalnie obsługiwaną wersją IE . Wszystkie starsze wersje należy traktować jako niezabezpieczone.

Jeśli to nie był wystarczający powód, aby przekonać Cię, aby go nie używać, weź pod uwagę, że Microsoft twierdzi, że IE8 i nowsze wersje automatycznie renderują się w trybie standardowym, gdy <!DOCTYPEjest obecny , co czyni go jeszcze bardziej bezcelowym.

Możesz sam zobaczyć, jak wygląda proces, w jakim IE decyduje, jakiego trybu dokumentu użyć:

wprowadź opis obrazu tutaj wprowadź opis obrazu tutaj

Jak widać, jeśli nie ma X-UA-Compatiblemetatagu ani nagłówka HTTP, sprawdza on ustawienia „Widoku zgodności” użytkownika. Jeśli użytkownik nie ma żadnego dla Twojej witryny, IE sprawdza, czy istnieje <!DOCTYPEdeklaracja. Jeśli znajdzie taki, automatycznie użyje najnowszego trybu standardów (aka „EmulateIEx”). Jeśli nie, powraca do trybu dziwactw.

Jeszcze więcej powodów, dla których nie powinieneś używać metatagu „X-UA-Compatible” samego Microsoft (wyróżnienie moje):

Gdy Internet Explorer napotka znacznik META zgodny z X-UA, rozpoczyna od nowa, używając silnika wyznaczonej wersji. To spadek wydajności, ponieważ przeglądarka musi zatrzymać i ponownie uruchomić analizę treści.

Innymi słowy, spowalnia początkowe renderowanie strony

Dyrektywa X-UA-Compatible to narzędzie umożliwiające aplikacjom działanie w najnowszej wersji przeglądarki Internet Explorer podczas aktualizowania aplikacji .

Został zaprojektowany tylko do tymczasowego użytku.

Najlepszą praktyką jest nagłówek HTTP zgodny z X-UA . Dodanie dyrektywy do nagłówka odpowiedzi informuje program Internet Explorer, jakiego silnika użyć przed rozpoczęciem analizowania zawartości. Należy to skonfigurować na serwerze witryny internetowej.

Innymi słowy, są lepsze sposoby implementacji kompatybilności z X-UA, jeśli absolutnie tego potrzebujesz.

Począwszy od 12 stycznia 2016 r. Tylko najnowsza wersja przeglądarki Internet Explorer dostępna dla obsługiwanego systemu operacyjnego będzie otrzymywać pomoc techniczną i aktualizacje zabezpieczeń. Internet Explorer 11 to ostatnia wersja przeglądarki Internet Explorer i nadal będzie otrzymywać aktualizacje zabezpieczeń, poprawki zgodności i pomoc techniczną w systemach Windows 7, Windows 8.1 i Windows 10 .

IE11 to jedyna oficjalnie obsługiwana wersja IE .

Jedynym powodem umieszczenia X-UA-Compatiblemetatagu w kodzie HTML było zastąpienie ustawień „Widoku zgodności” użytkownika w przeglądarce IE8, 9 i 10 dla Twojej witryny. W prawie każdym przypadku użytkownik nie zmieniłby tych ustawień (dlaczego miałby to zrobić?), A teraz te przeglądarki nie są już nawet obsługiwane.

W skrócie: ten tag miał już swój dzień.

Chuck Le Butt
źródło
17
Te schematy blokowe są fantastyczne.
bennettp123
9
Tylko uwaga, na dzień dzisiejszy (16.10.2015) to prawda, że ​​przycisk zgodności w IE11 zniknął, ale nadal można go włączyć w menu Ustawienia, więc nadal istnieje jako możliwość. Używamy go dzisiaj, ponieważ nasze oprogramowanie internetowe jest używane w firmowych intranetach, które mają starsze systemy, które do działania wymagają trybu kompatybilności, więc musimy to obejść. Świetna wskazówka dotycząca nagłówka HTTP, dzięki za to!
Doug Johnson
1
Ponieważ nadal można włączyć widok zgodności w IE11, a klienci korporacyjni to robią, nagłówek / tag jest nadal przydatny. Rozumiem, dlaczego nagłówek HTTP jest lepszy, ale jeśli tag znajduje się na samym początku DOM, niewiele się szkodzi i tylko w przeglądarkach, które nie rozpoczęły się w trybie Edge. Jako warunek wyłącznie dla okazjonalnych użytkowników, którzy utknęli w widoku zgodności, nie sądzę, aby używanie tagu (na samej górze <head>) było złą praktyką.
Tom Boutell
2
@ChuckLeButt Lub ich administrator zrobił to dla nich „za” za pośrednictwem zasad grupy. Wciąż jest to bardzo ważne w środowisku korporacyjnym, w którym największą wygraną było dla nas znalezienie sposobu, aby to zmienić.
Tom Boutell
2
@ChuckLeButt Rozumiem twój punkt widzenia i nie mam Windows-fu, aby temu zaprzeczyć ... a jednak nasz klient powiedział nam, że ma IE11 w trybie kompatybilności we wszystkich obszarach; jak to osiągnęli, tak naprawdę nie podzielono się z nami wiedzą. Możliwe, że przez cały czas mieli to na wyraźnej liście.
Tom Boutell
18

Jeśli użytkownik przegląda stronę znajdującą się w strefie „Lokalny intranet” (na przykład w firmowym intranecie), „widok zgodności” jest domyślnie włączony. To wtedy użyłem "X-UA-Compatible", aby wymusić na IE korzystanie z najnowszego silnika.

David
źródło
Tak, wydaje się, że to prawidłowe użycie, ale w takiej sytuacji prawdopodobnie zechcesz umieścić to w konfiguracji serwera lub w nagłówkach witryny? stackoverflow.com/a/9338959/199700
Chuck Le Butt
1
Istnieje również zmiana spowodowana po części przez wycofanie się firmy Microsoft z widoku zgodności. Oprócz lokalnego intranetu, jeśli domena ma wiele subdomen i aplikacji, dodanie widoku zgodności dla subdomeny powoduje zastosowanie jej teraz do CAŁEJ domeny (wcześniej była stosowana tylko do określonej subdomeny). Więc jeśli masz choćby jedną aplikację, która może tego wymagać, powinieneś zrobić to dla wszystkich pozostałych, aby uniknąć problemów z obsługą.
kilkenny
@ChuckLeButt, nagłówki są dobre, o ile jesteś w sieci, ale jeśli użytkownik zdecyduje się zapisać stronę lokalnie, pozostaje Ci tylko osadzone <meta>tagi. Dlatego ogólnie dobrą praktyką jest replikowanie ważnych nagłówków jako <meta>tagów.
ravilov
1

Dopóki jest ustawione na „Edge”, sprawdza się jako HTML5 i powiedziano mi, że powoduje ponowne renderowanie strony przez IE tylko wtedy, gdy witryna już renderowała ją w trybie zgodności. Mimo to umieszczenie go w konfiguracji serwera ( .htaccessitp.) Jest lepsze niż umieszczenie kodu HTML każdej strony.

Michael McGinnis
źródło