2011-09-04 9 views
8

Non capisco affatto quanto <meta http-equiv="X-UA-Compatible" content="..." /> è per ...Qual è il punto di X-UA-Compatibile?

qualcuno può spiegare ...

  • Ciò che fa per diversi valori di content?
  • Che cosa lo omette per i diversi browser?
  • Qual è la motivazione?
  • Perché esiste?
+1

Bene, quali sono quei diversi valori di 'contenuto'? – BoltClock

+0

@BoltClock - "IE = edge" "IE = 5" "IE = EmulateIE7" "IE = 7" "IE = EmulateIE8" "IE = 8" "IE = EmulateIE9 " IE = 9 " –

risposta

14

È un orribile scribacchino per gestire diversi bug o implementazioni incomplete in varie versioni del browser Internet Explorer. Ad esempio, questo:

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

istruirà IE9 far finta è davvero IE7 per evitare eventuali problemi che potrebbero verificarsi se il sito funziona in IE7, ma non IE9.

+1

Utilizzare le modalità di retrocompatibilità di IE deliberatamente è davvero una cosa molto difficile da giustificare, meglio evitare a tutti i costi.Tuttavia è importante notare che' content = "IE = Edge" 'può essere utile, in quanto eviterà problemi con modalità compat: nei casi in cui IE stesso è configurato per utilizzare la modalità di compatibilità per impostazione predefinita, l'uso di 'IE = edge' costringerà IE alla modalità standard – Spudley

+0

Si noti inoltre che sui siti intranet potrebbe essere necessario chiamare questo per disabilitare la modalità di compatibilità. vedi per maggiori dettagli: https://stackoverflow.com/a/26348511/601197 – AhsenB

21

Questo meta tag (o http header) ha significato solo per IE8 e versioni successive. È un modo per forzare IE a rendere la pagina come avrebbe una versione precedente. Ometterlo non ha alcun effetto, ma solo come effetto se usato.

valori possibili sono "IE =" seguito da uno dei seguenti:

  • Edge - Render come ciò che l'ultima versione di IE è
  • IE9 - Render come IE9 in modalità standard
  • Emula IE9 - Render come IE9 ma utilizzare il <!DOCTYPE> per determinare la modalità
  • IE8 - Render come IE8 in modalità standard
  • Emula IE8 - Render come IE8 ma utilizzare il <!DOCTYPE> per determ ine modalità
  • IE7 - Render come IE7 in modalità standard
  • Emulate IE7 - Render come IE7 ma utilizzare il <!DOCTYPE> per determinare la modalità
  • IE5 - Render come IE7 in modalità quirks

Inoltre , puoi aggiungere una virgola seguita da Chrome = 1 per dire a IE di eseguire il rendering della pagina utilizzando Google Chrome Frame, se installato. Così si potrebbe avere un tag che assomiglia a questo:

<meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1"> 

Oppure, invece di questo, si può anche specificare di utilizzare GCF per per una versione specifica di IE e di seguito in questo modo:

<meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=IE8"> 

Il che significa utilizzare GCF se è installato e IE è in versione 8 o successiva altrimenti, eseguire il rendering come ultima versione installata di IE.

Quindi, è ovvio che è utile essere in grado di rendere le versioni precedenti di IE utilizzare GCF ma probabilmente non era l'intenzione di Microsoft quando hanno implementato questo. Può essere utilizzato per la compatibilità con siti vecchi che funzionano solo in versioni precedenti di IE e non possono essere facilmente risolti ma è un po 'sciocco. Personalmente, lo trovo utile per i test.Dal momento che in genere non è così semplice testare più versioni di IE da una singola macchina di sviluppo, questo fornisce una soluzione decente.

+3

Ottima risposta, ma i lettori devono essere consapevoli del fatto che [Google Chrome Frame viene ritirato a gennaio 2014] (http://blog.chromium.org/2013/06/retiring-chrome-frame.html) –