Perché utilizzare più IE = Edge compatibile con X-UA?


95

Ultimamente ho seguito diversi corsi online e vedo ancora che alcuni insegnanti aggiungono il seguente meta tag all'inizio dei loro documenti per impostazione predefinita:

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

Il pensiero sembra essere che questo sia importante e utile quanto <meta charset="UTF-8"> .

Ma perché?

Secondo la documentazione di Microsoft Modern.ie è "best practice" che "garantisce che Internet Explorer utilizzi il motore più recente". Ok, abbastanza giusto.

Tuttavia, se si segue il diagramma di flusso su MSDN chiaramente dimostra che un documento senza `informazioni X-UA-Compatible è inoltrati a "Visualizzazione Compatibilità" le preferenze dell'utente, e se ciò che è non impostato, basta seguire la dichiarazione! DOCTYPE .

In altre parole, a meno che l'utente non disponga di alcune impostazioni di Visualizzazione Compatibilità, IE seguirà semplicemente il tuo! DOCTYPE e utilizzerà la modalità standard più recente del tuo browser per il rendering comunque ... Non c'è bisogno di unX-UA-Compatible IE=Edge dichiarazione.

Come dice MSDN: " Usa la dichiarazione del tipo di documento HTML5 per abilitare la modalità edge ".

Quindi in quali circostanze è X-UA-Compatible IE=Edgenecessario?

Risposte:


153

Come sottolinea la risposta di @David, a meno che tu non stia ospitando un sito nella zona "Intranet locale", ci sono pochissime ragioni per includerlo <meta http-equiv="X-UA-Compatible" content="IE=edge">nelle tue pagine web e (secondo i consigli delle best practice di Microsoft ) non c'è assolutamente alcun motivo per includerlo nella HTML. (Dovresti inserirlo nella configurazione del server o nelle intestazioni del sito, non nell'HTML stesso.)

Se stai pensando di utilizzare X-UA-Compatible punto qualsiasi del tuo progetto, dovresti ricordare che la Visualizzazione Compatibilità riguarda solo IE8, 9 e 10. È stata introdotta solo in IE8 ed è stata disabilitata in IE11.

Inoltre, tieni presente che IE11 è l'unica versione di IE ufficialmente supportata in questo momento . Tutte le versioni precedenti dovrebbero essere considerate non sicure.

Se questo non fosse un motivo sufficiente per convincerti a non usarlo, considera che Microsoft afferma che IE8 e versioni successive rendono già automaticamente in modalità Standard quando <!DOCTYPEè presente un , rendendolo ancora più inutile.

Puoi vedere di persona il flusso che IE prende per decidere quale modalità documento utilizzare:

inserisci qui la descrizione dell'immagine inserisci qui la descrizione dell'immagine

Come puoi vedere, se non X-UA-Compatibleè presente alcun meta tag o intestazione HTTP, controlla le impostazioni di "Visualizzazione Compatibilità" dell'utente. Se l'utente non ne dispone per il tuo sito Web, IE verifica la presenza di una <!DOCTYPEdichiarazione. Se ne trova uno, utilizza automaticamente l'ultima modalità Standard (nota anche come "EmulateIEx"). In caso contrario, torna alla modalità Quirks.

Altri motivi per cui non dovresti usare il meta tag "X-UA-Compatible" della stessa Microsoft (enfasi mia):

Quando Internet Explorer incontra il tag META compatibile con X-UA, ricomincia utilizzando il motore della versione designata. Si tratta di un calo delle prestazioni perché il browser deve interrompere e riavviare l'analisi del contenuto.

In altre parole, rallenta il rendering della pagina iniziale

La direttiva X-UA-Compatible è uno strumento che consente alle applicazioni di funzionare nell'ultima versione di Internet Explorer durante gli aggiornamenti dell'applicazione .

È stato progettato solo per un uso temporaneo.

La best practice è un'intestazione HTTP compatibile con X-UA . L'aggiunta della direttiva all'intestazione della risposta indica a Internet Explorer quale motore utilizzare prima che inizi l'analisi del contenuto. Questo deve essere configurato nel server del sito web.

In altre parole, ci sono modi migliori per implementare X-UA-Compatible se ne hai assolutamente bisogno.

A partire dal 12 gennaio 2016, solo la versione più recente di Internet Explorer disponibile per un sistema operativo supportato riceverà supporto tecnico e aggiornamenti di sicurezza. Internet Explorer 11 è l'ultima versione di Internet Explorer e continuerà a ricevere aggiornamenti di sicurezza, correzioni per la compatibilità e supporto tecnico su Windows 7, Windows 8.1 e Windows 10 .

IE11 è l'unica versione di IE ufficialmente supportata .

L'unico motivo per includere il X-UA-Compatiblemeta tag nel tuo HTML era sovrascrivere le impostazioni di "Visualizzazione Compatibilità" di un utente in IE8, 9 e 10 per il tuo sito web. In quasi tutti i casi l'utente non avrà modificato queste impostazioni (perché dovrebbe?), E ora quei browser non sono nemmeno più supportati.

In breve: questo tag ha fatto il suo tempo.


17
Quei diagrammi di flusso sono fantastici.
bennettp123

9
Solo una nota, ad oggi (16/10/2015), è vero che il pulsante compat in IE11 è sparito, ma può ancora essere abilitato nel menu Impostazioni, quindi esiste ancora come possibilità. Lo usiamo oggi perché il nostro software basato sul Web viene utilizzato nelle intranet aziendali che dispongono di sistemi legacy che richiedono la modalità compatibilità per funzionare, quindi dobbiamo aggirare il problema. Ottimo suggerimento sull'intestazione HTTP, grazie per questo!
Doug Johnson,

1
Poiché è ancora possibile abilitare la visualizzazione della compatibilità in IE11 e i client aziendali lo stanno facendo, l'intestazione / tag è ancora utile. Posso capire perché l'intestazione HTTP è superiore, ma se il tag si trova all'inizio del DOM viene fatto poco danno e solo nei browser che non sono stati avviati in modalità Edge. Come disposizione esclusivamente per l'utente occasionale bloccato nella visualizzazione della compatibilità, non penso sia una cattiva pratica usare il tag (proprio all'inizio di <head>).
Tom Boutell

2
@ChuckLeButt O il loro amministratore lo ha fatto "per" loro tramite Criteri di gruppo. È ancora molto importante nelle impostazioni aziendali, dove è stata la più grande vittoria per noi avere un modo per ignorarlo.
Tom Boutell

2
@ChuckLeButt Capisco il tuo punto e non ho Windows-Fu per contraddirlo ... eppure, il nostro cliente ci ha detto che aveva IE11 in modalità compat su tutta la linea; come l'hanno ottenuto non c'era davvero conoscenza condivisa con noi. È possibile che lo avessero già inserito in un elenco esplicito.
Tom Boutell

18

Se l'utente sta esplorando una pagina che si trova nella zona "Intranet locale" (ad esempio in una Intranet aziendale), la "visualizzazione compatibilità" è attivata per impostazione predefinita. Questo è quando ho usato "X-UA-Compatible" per forzare IE a utilizzare il motore più recente.


Sì, sembra un uso valido, ma in quella situazione probabilmente vorresti metterlo nella configurazione del server o comunque nelle intestazioni del sito? stackoverflow.com/a/9338959/199700
Chuck Le Butt

1
C'è anche un cambiamento causato in parte da Microsoft che depreca leggermente la Visualizzazione Compatibilità. Oltre all'Intranet locale, se un dominio ha molti sottodomini e applicazioni, l'aggiunta della Visualizzazione compatibilità per un sottodominio la applica ora a INTERO dominio (prima si applicava solo al sottodominio specifico). Quindi, se hai anche solo un'applicazione che potrebbe richiederla, dovresti farlo per tutti gli altri per evitare problemi di supporto.
kilkenny

@ChuckLeButt, le intestazioni vanno bene fintanto che sei sulla rete, ma se un utente sceglie di salvare la pagina localmente, tutto ciò che ti rimane sono i <meta>tag incorporati . Ecco perché è generalmente una buona pratica replicare anche intestazioni importanti come <meta>tag.
ravilov

1

Finché è impostato su "Edge", convalida come HTML5 e mi è stato detto che fa sì che IE riesca a eseguire il rendering della pagina solo se il sito lo stava già visualizzando in modalità Compatibilità. Tuttavia, metterlo nella configurazione del server ( .htaccess, ecc.) È meglio che inserire l'HTML di ogni pagina.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.