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


1438

Qual è la differenza se una pagina Web inizia con

<!DOCTYPE html> 
<html> 
  <head> 
    <meta http-equiv="X-UA-Compatible" content="IE=edge"> 

e se la pagina inizia con

<!DOCTYPE html> 
<html> 
  <head> 
     <!-- without X-UA-Compatible meta -->

Se non ci sono differenze, suppongo di poter semplicemente ignorare la X-UA-Compatiblemeta header, dato che voglio solo renderlo nella maggior parte dei modi standard in tutte le versioni di IE.

Risposte:


1703

Aggiornamento di ottobre 2015

Questa risposta è stata pubblicata diversi anni fa e ora la domanda dovrebbe davvero essere: dovresti prendere in considerazione l'uso del X-UA-Compatibletag sul tuo sito? con le modifiche che Microsoft ha apportato ai suoi browser (ulteriori informazioni su quelli seguenti).

A seconda dei browser Microsoft supportati, potrebbe non essere necessario continuare a utilizzare il X-UA-Compatibletag. Se hai bisogno di supportare IE9 o IE8, allora consiglierei di usare il tag. Se supporti solo i browser più recenti (IE11 e / o Edge), prenderei in considerazione la possibilità di eliminare del tutto questo tag. Se usi Twitter Bootstrap e devi eliminare gli avvisi di convalida, questo tag deve apparire nell'ordine specificato. Ulteriori informazioni di seguito:


Il X-UA-Compatiblemetatag consente agli autori Web di scegliere quale versione di Internet Explorer deve essere visualizzata come pagina. IE11 ha apportato modifiche a queste modalità; vedere la nota IE11 di seguito. Microsoft Edge , il browser che ha sostituito IE11, onora il X-UA-Compatiblemeta tag solo in determinate circostanze. Vedi la nota di Microsoft Edge di seguito.

Secondo Microsoft, quando si utilizza il X-UA-Compatibletag, dovrebbe essere il più alto possibile nel documento head:

Se si utilizza il tag META compatibile con X-UA, si desidera posizionarlo il più vicino possibile alla parte superiore della TESTA della pagina. Internet Explorer inizia a interpretare il markup utilizzando l'ultima versione. Quando Internet Explorer rileva il tag META compatibile con X-UA, ricomincia da capo utilizzando il motore della versione designata. Questo è un successo in quanto il browser deve interrompere e riavviare l'analisi del contenuto.

Ecco le tue opzioni:

  • "IE = edge"
  • "IE = 11"
  • "IE = EmulateIE11"
  • "IE = 10"
  • "IE = EmulateIE10"
  • "IE = 9"
  • "IE = EmulateIE9
  • "IE = 8"
  • "IE = EmulateIE8"
  • "IE = 7"
  • "IE = EmulateIE7"
  • "IE = 5"

Per cercare di capire cosa significhi ciascuno, ecco le definizioni fornite da Microsoft:

Internet Explorer supporta una serie di modalità di compatibilità dei documenti che abilitano funzionalità diverse e possono influire sulla modalità di visualizzazione del contenuto:

  • La modalità Edge indica a Internet Explorer di visualizzare il contenuto nella modalità più alta disponibile. Con Internet Explorer 9, questo equivale alla modalità IE9. Se una versione futura di Internet Explorer supportasse una modalità di compatibilità superiore, le pagine impostate sulla modalità edge appariranno nella modalità più alta supportata da quella versione. Queste stesse pagine verrebbero comunque visualizzate in modalità IE9 quando visualizzate con Internet Explorer 9. Internet Explorer supporta una serie di modalità di compatibilità dei documenti che abilitano funzionalità diverse e possono influire sulla modalità di visualizzazione del contenuto:

  • La modalità IE11 offre il massimo supporto disponibile per standard di settore affermati ed emergenti, inclusi HTML5, CSS3 e altri.

  • La modalità IE10 offre il massimo supporto disponibile per standard di settore affermati ed emergenti, inclusi HTML5, CSS3 e altri.

  • La modalità IE9 offre il massimo supporto disponibile per standard di settore affermati ed emergenti, tra cui HTML5 (Working Draft), W3C Cascading Style Sheets Livello 3 Specification (Working Draft), Scalable Vector Graphics (SVG) 1.0 Specification e altri. [Nota dell'editore: IE 9 non supporta le animazioni CSS3].

  • La modalità IE8 supporta molti standard consolidati, tra cui la specifica W3C Cascading Style Sheets Level 2.1 e l'API dei selettori W3C; fornisce inoltre un supporto limitato per le specifiche di livello 3 (Working Draft) dei fogli di stile a cascata del W3C e altri standard emergenti.

  • La modalità IE7 esegue il rendering del contenuto come se fosse visualizzato in modalità standard da Internet Explorer 7, indipendentemente dal fatto che la pagina contenga o meno una direttiva.

  • Emula modalità IE9 indica a Internet Explorer di utilizzare la direttiva per determinare come eseguire il rendering del contenuto. Le direttive in modalità standard sono visualizzate in modalità IE9 e le direttive in modalità strane sono visualizzate in modalità IE5. A differenza della modalità IE9, la modalità Emulate IE9 rispetta la direttiva.

  • Emula modalità IE8 indica a Internet Explorer di utilizzare la direttiva per determinare come eseguire il rendering del contenuto. Le direttive in modalità standard sono visualizzate in modalità IE8 e le direttive in modalità strane sono visualizzate in modalità IE5. A differenza della modalità IE8, la modalità Emulate IE8 rispetta la direttiva.

  • Emula modalità IE7 indica a Internet Explorer di utilizzare la direttiva per determinare come eseguire il rendering del contenuto. Le direttive in modalità standard sono visualizzate in modalità standard di Internet Explorer 7 e le direttive in modalità strane sono visualizzate in modalità IE5. A differenza della modalità IE7, la modalità Emulate IE7 rispetta la direttiva. Per molti siti Web, questa è la modalità di compatibilità preferita.

  • La modalità IE5 esegue il rendering del contenuto come se fosse visualizzato in modalità strane da Internet Explorer 7, che è molto simile al modo in cui il contenuto veniva visualizzato in Microsoft Internet Explorer 5.

IE10 NOTA: A partire da IE10, la modalità di stranezza si comporta in modo diverso rispetto alle versioni precedenti del browser. In IE9 e nelle versioni precedenti, la modalità stranezza limitava la pagina Web alle funzionalità supportate da IE5.5. In IE10, la modalità Quirks è conforme alle differenze specificate nella specifica HTML5.

Personalmente, scelgo sempre il http-equiv="X-UA-Compatible" content="IE=edge"meta tag, poiché le versioni precedenti hanno molti bug e non voglio che IE decida di andare in "Modalità compatibilità" e mostrare il mio sito come IE7 rispetto a IE8 o 9. Preferisco sempre l'ultima versione di IE.

IE11

Da Microsoft :

A partire da IE11, la modalità bordo è la modalità documento preferita; rappresenta il massimo supporto per gli standard moderni disponibili per il browser.

Utilizzare la dichiarazione del tipo di documento HTML5 per abilitare la modalità edge:

<!doctype html>

La modalità Edge è stata introdotta in Internet Explorer 8 ed è disponibile in ogni versione successiva. Le funzionalità supportate dalla modalità edge sono limitate a quelle supportate dalla versione specifica del browser che esegue il rendering del contenuto.

A partire da IE11, le modalità documento sono obsolete e non dovrebbero più essere utilizzate, se non su base temporanea. Assicurati di aggiornare i siti che si basano su funzionalità legacy e modalità documento per riflettere gli standard moderni.

Se devi scegliere come target una modalità documento specifica in modo che il tuo sito funzioni mentre lo rielabori per supportare standard e funzionalità moderni, tieni presente che stai utilizzando una funzione di transizione, che potrebbe non essere disponibile nelle versioni future.

Se al momento usi l'intestazione compatibile con x-ua per scegliere come target una modalità documento legacy, è possibile che il tuo sito non rifletta la migliore esperienza disponibile con IE11.

Microsoft Edge (sostituzione per Internet Explorer fornito in bundle con Windows 10)

Informazioni sul X-UA-Compatiblemeta tag per la versione "Edge" di IE. Da Microsoft :

Presentazione della modalità documento Edge "vivente"

Come annunciato nell'agosto 2013, stiamo deprecando le modalità documento a partire da IE11. Con i nostri ultimi aggiornamenti della piattaforma, la necessità di modalità documento legacy è principalmente limitata alle app Web legacy Enterprise. Con le nuove modifiche all'architettura, queste modalità documento legacy saranno isolate dalle modifiche nella modalità Edge "vivente", che contribuirà a garantire un livello molto più elevato di compatibilità per i clienti che dipendono da tali modalità e ci aiuterà a muoverci ancora più rapidamente sui miglioramenti in Edge . IE rispetterà comunque le modalità documento fornite dai siti intranet, i siti nell'elenco Visualizzazione compatibilità e se utilizzati solo con la modalità Enterprise.

I siti Internet pubblici verranno renderizzati con la nuova piattaforma Edge mode (ignorando X-UA-Compatible). Il nostro obiettivo è che Edge sia la modalità documento "vivente" da qui in poi e non verranno introdotte ulteriori modalità documento in futuro.

Con le modifiche in Microsoft Edge che non supportano più le modalità documento nella maggior parte dei casi, Microsoft ha uno strumento per scansionare il tuo sito per controllare e vedere se ha un codice non compatibile con Edge.

Chrome = 1 Informazioni per IE

V'è anche chrome=1che è possibile utilizzare o utilizzare insieme con una delle opzioni di cui sopra, come: <meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1">. chrome=1è per Chrome Frame di Google che è definito come:

Google Chrome Frame è un plug-in del browser open source. Gli utenti che hanno installato il plug-in hanno accesso alle tecnologie web aperte di Google Chrome e al motore JavaScript veloce quando aprono le pagine nel browser.

Google Chrome Frame migliora la tua esperienza di navigazione in Internet Explorer. Visualizza i siti abilitati per Google Chrome Frame utilizzando la tecnologia di rendering di Google Chrome, dandoti accesso alle più recenti funzionalità HTML5 nonché alle prestazioni e alle funzioni di sicurezza di Google Chrome senza interrompere in alcun modo il normale utilizzo del browser.

Quando viene installato Google Chrome Frame, il Web migliora solo senza che tu debba pensarci.

Ma per far funzionare quel plug-in devi usare chrome=1il X-UA-Compatiblemeta tag.

Ulteriori informazioni su Chrome Frame sono disponibili qui .

Nota: Google Chrome Frame funziona solo per IE6 fino a IE9 ed è stato ritirato il 25 febbraio 2014. Ulteriori informazioni sono disponibili qui . Grazie a @mck per il link.

convalida:

HTML5 :

La pagina verrà convalidata utilizzando W3 Validator solo quando si utilizza <meta http-equiv="X-UA-Compatible" content="IE=Edge">. Per altri valori genererà l'errore: A meta element with an http-equiv attribute whose value is X-UA-Compatible must have a content attribute with the value IE=edge.in altre parole, se lo hai, IE=edge,chrome=1non verrà convalidato. Ignoro completamente questo errore poiché i browser moderni ignorano semplicemente questa riga di codice.

Se devi avere un codice completamente valido, considera di farlo a livello di server impostando l'intestazione HTTP. Come nota, dice Microsoft, If both of these instructions are sent (meta and HTTP), the developer's preference (meta element) takes precedence over the web server setting (HTTP header). vedi la risposta di olibre o la risposta di bitinn per maggiori dettagli su come impostare un'intestazione HTTP.

XHTML

Non esiste un problema con la convalida quando si utilizza <meta http-equiv="X-UA-Compatible" content="IE=Edge" />finché il tag è chiuso correttamente (cioè />vs >).

Bootstrap di Twitter

Questo tag è stato fortemente raccomandato dal team Bootstrap almeno dal 2014 e Bootlint , la linter creata dal team twbs continua a emettere un avviso quando il tag viene omesso. La linter distingue tra avvertenze ed errori e come tale la gravità dell'omissione di questo tag può essere considerata minore.


Per ulteriori informazioni, X-UA-Compatibleconsultare il sito Web Microsoft che definisce la compatibilità dei documenti .

Per ulteriori informazioni su ciò che supporta IE, vedere caniuse.com .

Per ulteriori informazioni sui requisiti Bootstrap di Twitter, consultare la pagina wiki del progetto bootlint .


40
Se non ho "X-UA-Compatible" nelle intestazioni, cosa accadrebbe?
Morgan Cheng,

45
Fondamentalmente quello che succede è quando hai l'X-UA-Compatibile che dice a IE come comportarsi rispetto al valore impostato (IE = bordo ecc.) Se non c'è IE mostrerà al sito come pensa meglio dovrebbe essere mostrato . Potrebbe essere la modalità di compatibilità o potrebbe essere l'ultima versione di IE. Qualunque cosa Microsoft / IE pensi sia la cosa migliore. Ha senso?
L84,

2
@TravisJ - Secondo la mia comprensione, la modalità più alta disponibile sostanzialmente significa che IE 8 può supportare fino alle modalità IE8, IE9 può supportare le modalità IE9 e così via. Ho aggiunto alcune definizioni per ciascuna modalità fornita da Microsoft.
L84,

10
@AdrienBe - Sono completamente d'accordo! Finora IE 10 è stato il migliore per me, ma disprezzo qualsiasi altra versione. Una volta ho avuto un'impostazione della pagina con alcuni effetti circa 200-300 righe di HTML e circa 20 minuti di codifica. Per far funzionare IE ho dovuto aggiungere altre 1.000 righe di codice (principalmente javascript di terze parti) e 2-3 ore di lavoro! Odio davvero IE =>
L84,

9
Google Chrome Frame verrà ritirato a gennaio 2014: blog.chromium.org/2013/06/retiring-chrome-frame.html
mck

339

Usa content="IE=edge,chrome=1"   Salta altre X-UA-Compatiblemodalità

<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
                                   -------------------------- 
  • Nessuna icona di compatibilità
    La barra degli indirizzi di IE9 non mostra il pulsante Visualizzazione Compatibilità
    e la pagina non mostra anche un miscuglio di menu, immagini e caselle di testo fuori posto.

  • Caratteristiche
    Questo meta tag è necessario per abilitare javascript::JSON.parse()su IE8
    (anche quando <!DOCTYPE html>è presente)

  • La correttezza del
    rendering / esecuzione di HTML / CSS / JavaScript moderni è più valida (migliore).

  • Prestazioni
    Il motore di rendering Trident dovrebbe funzionare più velocemente nella sua modalità edge .


uso

Nel tuo HTML

<!DOCTYPE html> 
<html> 
  <head>
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">

O meglio nella configurazione del tuo server web:
(vedi anche la risposta di RiaD )

  • Apache come proposto da pixeline

    <IfModule mod_setenvif.c>
      <IfModule mod_headers.c>
        BrowserMatch MSIE ie
        Header set X-UA-Compatible "IE=Edge,chrome=1" env=ie
      </IfModule>
    </IfModule>
    <IfModule mod_headers.c>
      Header append Vary User-Agent
    </IfModule>
  • Nginx come proposto da Stef Pause

    server {
      #...
      add_header X-UA-Compatible "IE=Edge,chrome=1";
    }
  • Proxy di vernice come proposto da Lucas Riutzel

    sub vcl_deliver {
      if( resp.http.Content-Type ~ "text/html" ) {
        set resp.http.X-UA-Compatible = "IE=edge,chrome=1";
      }
    }
  • IIS (dalla v7)

    <configuration>
      <system.webServer>
         <httpProtocol>
            <customHeaders>
               <add name="X-UA-Compatible" value="IE=edge,chrome=1" />
            </customHeaders>
         </httpProtocol>
      </system.webServer>
    </configuration>

Microsoft consiglia la modalità Edge da IE11

Come notato da Lynda (vedi commenti), la compatibilità cambia in IE11 consiglia la modalità Edge :

A partire da IE11, la modalità bordo è la modalità documento preferita; rappresenta il massimo supporto per gli standard moderni disponibili per il browser.

Ma la posizione di Microsoft non era chiara. Un'altra pagina MSDN non ha raccomandato la modalità Edge :

Poiché la modalità Edge impone l'apertura di tutte le pagine in modalità standard, indipendentemente dalla versione di Internet Explorer, potresti essere tentato di utilizzarlo per tutte le pagine visualizzate con Internet Explorer. Non farlo, poiché l' X-UA-Compatibleintestazione è supportata solo a partire da Windows Internet Explorer 8.

Invece, Microsoft ha raccomandato di utilizzare <!DOCTYPE html>:

Se vuoi che tutte le versioni supportate di Internet Explorer aprano le tue pagine in modalità standard, usa la dichiarazione del tipo di documento HTML5 [...]

Come Ricardo spiega (nei commenti seguenti) qualsiasi DOCTYPE (HTML4, XHTML1 ...) può essere utilizzato per attivare la modalità Standard, non solo il DOCTYPE di HTML5. L'importante è avere sempre un DOCTYPE nella pagina.

Clara Onager ha anche notato in una versione precedente di Specificare le modalità documento legacy :

La modalità Edge è solo a scopo di test; non utilizzarlo in un ambiente di produzione.

È così confuso che Usman Y pensava che Clara Onager stesse parlando:

L'esempio [...] è fornito solo a scopo illustrativo; non usarlo in un ambiente di produzione.

<meta http-equiv="X-UA-Compatible" content="IE=7,9,10" >

Bene ... Nel resto di questa risposta do più spiegazioni sul perché l'utilizzo content="IE=edge,chrome=1"è una buona pratica in produzione.


Storia

Per molti anni (dal 2000 al 2008), la quota di mercato di IE è stata superiore all'80% . E IE v6 è stato considerato uno standard di fatto (quota di mercato dall'80% al 97% nel 2003 , 2004, 2005 e 2006 solo per IE6, maggiore quota di mercato con tutte le versioni di IE).

Poiché IE6 non rispettava gli standard Web , gli sviluppatori dovevano testare il proprio sito Web utilizzando IE6. Questa situazione è stata eccezionale per Microsoft (MS) in quanto gli sviluppatori Web hanno dovuto acquistare prodotti MS (ad esempio IE non può essere utilizzato senza l'acquisto di Windows) ed è stato più redditizio rimanere non conforme (ovvero Microsoft voleva diventare il standard escludendo altri aziende).

Pertanto, molti siti erano solo conformi a IE6 e poiché IE non era conforme agli standard Web, tutti questi siti Web non erano ben renderizzati su browser conformi agli standard. Ancora peggio, molti siti richiedono solo IE .

Tuttavia, in questo momento, Mozilla ha iniziato lo sviluppo di Firefox rispettando il più possibile tutti gli standard Web (altri browser sono stati implementati per il rendering delle pagine come fatto da IE6). Poiché sempre più sviluppatori web volevano utilizzare le nuove funzionalità degli standard Web, sempre più siti Web erano supportati da Firefox rispetto a IE.

Quando la quota di mercato di IE stava diminuendo, gli Stati membri si resero conto che rimanere incompatibili con gli standard non era una buona idea. Pertanto MS ha iniziato a rilasciare la nuova versione di IE (IE8 / IE9 / IE10) rispettando sempre più gli standard web.


Il problema incompatibile con il web

Ma il problema riguarda tutti i siti Web progettati per IE6: Microsoft non ha potuto rilasciare nuove versioni di IE incompatibili con questi vecchi siti Web progettati per IE6. Invece di dedurre la versione di IE è stato progettato un sito Web, MS ha chiesto agli sviluppatori di aggiungere dati extra ( X-UA-Compatible) nelle loro pagine.

IE6 è ancora utilizzato nel 2016

Al giorno d'oggi, IE6 è ancora utilizzato (0,7% nel 2016) (4,5% a gennaio 2014) e alcuni siti Web Internet sono ancora conformi solo a IE6. Alcuni siti Web / applicazioni Intranet sono testati utilizzando IE6. Alcuni siti Web Intranet funzionano al 100% solo su IE6. Queste aziende / dipartimenti preferiscono posticipare il costo della migrazione: altre priorità, nessuno non sa più come è stato implementato il sito Web / l'applicazione, il proprietario del sito Web / dell'applicazione legacy è fallito ...

La Cina rappresenta il 50% dell'utilizzo di IE6 nel 2013, ma potrebbe cambiare nei prossimi anni con la diffusione della distribuzione cinese Linux .

Sii fiducioso con le tue abilità sul web

Se (provi a) rispettare lo standard web, puoi semplicemente usare sempre http-equiv="X-UA-Compatible" content="IE=edge,chrome=1". Per mantenere la compatibilità con i browser precedenti, evita di utilizzare le funzionalità Web più recenti: utilizza il sottoinsieme supportato dal browser più vecchio che desideri supportare. Oppure, se vuoi andare oltre, puoi adottare concetti come Degradazione aggraziata , Miglioramento progressivo e JavaScript discreto . (Potresti anche essere felice di leggere Cosa dovrebbe considerare uno sviluppatore web? )

Non preoccuparti del miglior rendering della versione di IE: questo non è il tuo lavoro in quanto i browser devono essere conformi agli standard web. Se il tuo sito è conforme allo standard e utilizza funzionalità moderatamente più recenti, pertanto i browser devono essere conformi al tuo sito Web .

Inoltre, poiché ci sono molte campagne per uccidere IE6 ( IE6 non più , campagna MS ), al giorno d'oggi potresti evitare di perdere tempo con i test IE!

Esperienza personale su IE6

Nel periodo 2009-2012, ho lavorato per un'azienda che utilizza IE6 come permesso dal browser singolo ufficiale . Ho dovuto implementare un sito Web Intranet solo per IE6. Ho deciso di rispettare lo standard web ma usando il sottoinsieme compatibile con IE6 (HTML / CSS / JS).

È stato difficile, ma quando la società è passata a IE8, il sito Web era ancora ben reso perché avevo usato Firefox e firebug per verificare la compatibilità con lo standard web;)


2
'La modalità Edge è intesa solo a scopo di test; non utilizzarlo in un ambiente di produzione. ' Vedi msdn.microsoft.com/en-us/library/jj676915(v=vs.85).aspx
Carl Onager,

5
Per favore @ClaraOnager prenditi del tempo per spiegare cosa c'è di sbagliato nella mia risposta (dal tuo punto di vista). Anche se MS non consiglia l'uso della modalità Edge nell'ambiente di produzione, ci sono buoni motivi per usarla nell'ambiente di produzione. È importante chiarire tecnicamente le nostre migliori pratiche. Mi piace condividere le mie conoscenze ed esperienze. Spero anche tu. Possiamo migliorare insieme;) Saluti
olibre

2
Ciao @Ricardo, sono d'accordo con te. Microsoft dice "Se si desidera che tutte le versioni supportate di Internet Explorer aprano le pagine in modalità standard, utilizzare HTML5 [...]" nella sezione Informazioni sulle modalità documento legacy (consultare il Suggerimento ). Forse la mia spiegazione non è chiara ... Forse ho frainteso qualcosa ... Ho cambiato il mio testo ... Cosa ne pensi dei miei cambiamenti? va bene per te? Cosa consigli di cambiare / migliorare nella mia risposta? Grazie per il tuo feedback Saluti ;-)
olibre

5
@ClaraOnager ... nella tua prima risposta stai indicando in modo errato, nella pagina di riferimento .. MS dice di non utilizzare nell'ambiente di produzione per: <meta http-equiv = "X-UA-Compatible" content = "IE = 7, 9,10 "> non le altre cose Edge.
Usman Younas,

3
Informazioni sulla modalità Edge utilizzata nell'ambiente di produzione. Da Microsoft:Starting with IE11, edge mode is the preferred document mode; it represents the highest support for modern standards available to the browser.
L84,

58

La differenza è che se si specifica solo l' DOCTYPEopzione, le impostazioni della vista compatibilità di IE hanno la precedenza. Per impostazione predefinita, queste impostazioni obbligano tutti i siti Intranet a Visualizzazione Compatibilità indipendentemente da DOCTYPE. C'è anche una casella di controllo per utilizzare la Visualizzazione compatibilità per tutti i siti Web, indipendentemente da DOCTYPE.

Finestra di dialogo Impostazioni vista compatibilità IE

X-UA-Compatibleignora le impostazioni di Visualizzazione compatibilità, quindi la pagina verrà visualizzata in modalità standard indipendentemente dalle impostazioni del browser. Questo impone la modalità standard per:

  • pagine intranet
  • pagine Web esterne quando l'amministratore del computer ha scelto "Visualizza tutti i siti Web in Visualizzazione Compatibilità" come impostazione predefinita: si pensi a grandi aziende, governi, università
  • quando si finisce involontariamente nell'elenco Visualizzazione compatibilità Microsoft
  • casi in cui gli utenti hanno aggiunto manualmente il tuo sito Web all'elenco in Impostazioni Visualizzazione compatibilità

DOCTYPEda solo non può farlo; ti ritroverai in una delle modalità di Visualizzazione Compatibilità in questi casi, indipendentemente da DOCTYPE.

Se metavengono specificati sia il tag che l'intestazione HTTP, ilmeta tag ha la precedenza.

Questa risposta si basa sull'esame delle regole complete per la scelta della modalità documento in IE8 , IE9 e IE10 . Si noti che esaminare l' DOCTYPEultimo è il fallback per decidere la modalità documento.


1
Nello scenario Intranet, per impostazione predefinita IE10 esegue il rendering in modalità compatibilità. Vedi stackoverflow.com/questions/13284083/…. Questo tag non è richiesto per impostazione predefinita per Internet, ma è necessario (per impostazione predefinita) quando si utilizza myintenralserver / myapp . Volevo aggiungere questo commento, perché la differenza tra Internet e Intranet era chiara solo dal testo dello screenshot, non dal testo delle risposte sulla pagina.
yzorg,

Hai ragione, avrei dovuto essere più chiaro al riguardo. Ho riscritto il post; fammi sapere se c'è qualcos'altro che dovrei affrontare. Grazie!
andrewdotn,

Grazie! questa risposta è molto più chiara di altre risposte relative ai siti Intranet. Altre risposte vanno nei dettagli tecnici su perché e come. Odio MS IE. Anche una buona scrittura: un paragrafo chiarisce il motivo per cui abbiamo bisogno del meta tag. Bravo
Aniket Inge

3
Vorrei poter votare questa risposta cento volte. Schermo salvavita afferrare proprio lì.
Abbassamento della

Fantastico fantastico fantastico! Grazie mille per questa risposta
Seanosapien,

25

Usa questo per forzare IE a nascondere quel fastidioso pulsante di compatibilità del browser nella barra degli indirizzi:

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

1
'La modalità Edge è intesa solo a scopo di test; non utilizzarlo in un ambiente di produzione. ' Vedi msdn.microsoft.com/en-us/library/jj676915(v=vs.85).aspx
Carl Onager,

4
Per una buona misura io uso <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">con la chrome=1direttiva in modo che richieda agli utenti IE6, 7, 8 di installare / utilizzare Chrome Frame . Anche HTML5 Boilerplate lo utilizza.
Ricardo Zea,

10
@ClaraOnager Anche se Microsoft lo dice, non significa necessariamente che abbiano ragione. L'ho usato <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">dal giorno in cui è uscito senza problemi. In realtà, ho già salvato il mio team e me stesso centinaia di mal di testa facendo in modo che IE degli utenti usasse il suo motore più recente per eseguire il rendering delle pagine che costruiamo. Contrariamente a te e Microsoft, raccomando a tutti di usare il meta tag sopra ogni volta . Finché IE è ancora in circolazione, saremo "costretti" a utilizzare questo meta tag: p
Ricardo Zea,

Questo è cambiato con IE11. Questa versione ha fatto una mossa drammatica nel mondo dei browser seguendo gli standard ufficiali. È arrivato al punto di non identificarsi nemmeno come Internet Explorer! Ora dice che è "Netscape" e non include nulla nelle informazioni del browser per regalare la sua vera identità. Se si riscontrano ancora stranezze nel browser IE da questa versione in poi, è necessario forzarlo in IE10 impostando <meta http-equiv="X-UA-Compatible" content="IE=10">. Quindi si segnala come Microsoft Internet Explorer.
timore reverenziale

affrontando lo stesso problema correlato, se qualcuno mi può aiutare: stackoverflow.com/questions/22013880/…
dsi

25

Dal momento che non posso aggiungere un commento alla risposta contrassegnata, lo posterò qui.

Oltre alla risposta corretta, puoi effettivamente convalidarlo. Poiché questo meta tag è diretto solo per IE, tutto ciò che devi fare è aggiungere un IE condizionale.

<!--[if IE]>
    <meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1">
<![endif]-->

Fare questo è come aggiungere qualsiasi altra istruzione condizionale di IE e funziona solo per IE e nessun altro browser ne sarà interessato.


4
I commenti condizionali non devono essere usati TRANNE come target HTML per <= IE9. (Questo era vero anche quando questa risposta è stata scritta)
EKW

18

Penso che questo diagramma di Microsoft spieghi tutto. Per dire a IE come eseguire il rendering del contenuto,! DOCTYPE deve funzionare con il meta tag compatibile con X-UA. ! DOCTYPE da solo non ha alcun effetto sulla modifica della modalità documento IE.

inserisci qui la descrizione dell'immagine

http://ie.microsoft.com/testdrive/ieblog/2010/Mar/02_HowIE8DeterminesDocumentMode_3.png


3
Ecco una versione aggiornata che include IE9. OMG ... ie.microsoft.com/testdrive/ieblog/2010/Jun/…
Spiralis

3
E questo include IE10: msdn.microsoft.com/en-us/library/ff406036%28v=vs.85%29.aspx I diversi capitoli hanno i loro diagrammi di flusso separati ...
Spiralis,

Hai letto male quel diagramma di flusso. In assenza di X-UA-Compatible il browser cercherà <! DOCTYPE>. Se ne trova uno, viene eseguito il rendering in modalità standard (aka "EmulateIE8"). In caso contrario, torna alla "Modalità strane".
Chuck Le Butt,

Grazie per aver caricato l'immagine su StackOverflow. I collegamenti originali a Microsoft sono tutti morti.
Elmue,

12

Solo per completezza, non devi effettivamente aggiungerlo al tuo HTML (che è sconosciuto http-equiv in HTML5)

Fallo e non guardare mai indietro (primo esempio per apache , secondo per nginx )

Header set X-UA-Compatible "IE=Edge,chrome=1"

add_header X-UA-Compatible "IE=Edge,chrome=1";

2
@HueiTan - Penso che il poster stia dicendo che quando provi a convalidare la pagina usando W3 Validator genererà un errore: Bad value X-UA-Compatible for attribute http-equiv on element meta.- Questo non significa che non funzionerà. Non è solo un codice valido.
L84,

10

Solo una frase per dire Chiedi a Internet Explorer di utilizzare il suo motore di rendering più recente

<meta http-equiv="x-ua-compatible" content="ie=edge">

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

Per far funzionare questa linea come previsto, assicurati che:

  1. È il primo elemento subito dopo <head>
  2. Nessun commento condizionale viene utilizzato prima del meta tag, ad esempio <html>sull'elemento

Altrimenti alcune versioni di IE semplicemente lo ignorano.

AGGIORNARE

Queste due regole sono semplificate ma sono facili da ricordare e da verificare. Nonostante i documenti MSDN affermino che puoi mettere il titolo e altri meta tag prima di questo, non consiglierei di farlo.

Come farlo funzionare con i commenti condizionali.

Articolo interessante sull'ordine degli elementi nella testa.(blogs.msdn.com, per IE)

RIFERIMENTO

Dalla documentazione MSDN :

Il X-UA-Compatible[...] deve apparire nell'intestazione della pagina web (la sezione HEAD) prima di tutti gli altri elementi tranne l'elemento titolo e altri meta elementi.


5

se usi il tuo sito Web nella stessa rete del server IE preferisce passare alla modalità di compatibilità nonostante DOCTYPE.
L'aggiunta meta http-equiv="X-UA-Compatible" content="IE=Edge" disabilita questo comportamento indesiderato.


Un'altra parola per "stessa rete del server" è intranet ... quindi sostanzialmente IE10 è rotto per impostazione predefinita per tutti i siti Intranet. Guarda lo screenshot nella risposta di @AndrewNeitsch.
yzorg,

3

Questa è LETTERAMENTE 1 query di Google , ma ecco qui:

http://msdn.microsoft.com/en-us/library/jj676915(v=vs.85).aspx

Comprensione delle modalità documento legacy

Utilizzare il seguente valore per visualizzare la pagina Web in modalità edge, che è la modalità standard più alta supportata da Internet Explorer, da Internet Explorer 6 a IE11.

<meta http-equiv="x-ua-compatible" content="IE=edge"

Nota che questo è funzionalmente equivalente all'uso del doctype HTML5. Posiziona Internet Explorer nella modalità documento supportata più alta. Edge Most è particolarmente utile per i siti Web con manutenzione regolare che vengono regolarmente testati per l'interoperabilità tra più browser, incluso Internet Explorer.

Nota A partire da IE11, la modalità bordo è considerata la modalità documento preferita. (Nelle versioni precedenti, era considerato sperimentale.) Per saperne di più, vedi Le modalità documento sono obsolete. A partire da Windows Internet Explorer 8, alcuni sviluppatori Web hanno utilizzato il meta elemento modalità edge per nascondere il pulsante Visualizzazione compatibilità sulla barra degli indirizzi. A partire da IE11, questo non è più necessario poiché il pulsante è stato rimosso dalla barra degli indirizzi. Poiché impone l'apertura di tutte le pagine in modalità standard, indipendentemente dalla versione di Internet Explorer, potresti essere tentato di utilizzare la modalità edge per tutte le pagine visualizzate con Internet Explorer. Non farlo, poiché l'intestazione compatibile con X-UA è supportata solo a partire da Internet Explorer 8.

Suggerimento Se si desidera che tutte le versioni supportate di Internet Explorer aprano le pagine in modalità standard, utilizzare la dichiarazione del tipo di documento HTML5, come mostrato nell'esempio precedente.

Inoltre tra i risultati della ricerca c'è:


2

2.1.3.5 Meta tag di compatibilità X-UA e intestazione di risposta HTTP

Questa funzionalità non sarà implementata in nessuna versione di Microsoft Edge.

<meta http-equiv="X-UA-Compatible" content="IE=9; IE=8; IE=7; IE=EDGE" />

Vedere https://msdn.microsoft.com/en-us/library/ff955275(v=vs.85).aspx

Sì, lo so che sono in ritardo alla festa, ma ho appena avuto alcuni problemi e discussioni e alla fine il mio capo mi ha fatto rimuovere il X-UA-Compatible tag di rimozione da tutti i documenti su cui ho lavorato.

Se queste informazioni non sono aggiornate o non sono più pertinenti, correggimi.

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.