2010-01-14 15 views
55

Ho appena aggiornato il mio sito per un design più conforme e conforme agli standard. Il mio progetto precedente era così sciatto che ho dovuto usare il tag IE = EmulateIE per forzare l'emulazione IE7.Forza IE8 * non * per utilizzare la Visualizzazione Compatibilità

Purtroppo, credo che i browser rilevi ancora questa impostazione da visite precedenti, causando il mio nuovo sito (che sembra grande, senza il pulsante premuto) per cercare spazzatura di nuovo ...

Esiste un tag opposta che ho potrebbe usare, o un po 'di magia che posso fare fare PHP alle intestazioni HTTP disabilitare il caching di questa impostazione?

+9

Sai cosa, ho pensato di leggere tutte le domande precedenti su questo argomento, ma la scheda a destra di questo ha la risposta: Caso chiuso! –

+6

Quindi postalo come risposta e accettalo - Avevo bisogno delle stesse informazioni e ho quasi perso il commento. Basta non dimenticare di collegarsi alla "scheda a destra" :) – AnonJr

+2

Puoi farlo come intestazione HTTP effettiva anziché HTML. Questo è meglio, poiché i non-niente hanno meno probabilità di copiarli e incollarli in siti non compatibili. 'header ('X-UA-Compatible: IE = edge);' – TRiG

risposta

51

In assenza di un'intestazione http-equiv compatibile X-UA-compatibile, la modalità di compatibilità è determinata dallo !DOCTYPE (o dall'assenza di uno !DOCTYPE, a seconda dei casi). Per un grafico di cui !DOCTYPE ti dà la modalità (in vari browser) vedere qui:

http://hsivonen.iki.fi/doctype/ (avrete bisogno di scorrere verso il basso verso la parte inferiore della pagina.)

è possibile ignorare questo comportamento usando un elemento meta per specificare un header http-equiv X-UA-Compatible, in questo modo: <meta http-equiv="X-UA-Compatible" content="IE=edge" >

(Nota: IE = bordo va con la versione più alto disponibile - attualmente IE8 come di questo intervento - o uno specificare esplicitamente IE8.)

Per ulteriori informazioni, vedere qui: http://msdn.microsoft.com/en-us/library/cc288325(VS.85).aspx

+7

Piuttosto che usare un numero grande di aribirarity per la versione di IE, sarebbe meglio usare la parola chiave supportata 'edge' per forzare sempre la versione più recente.

+0

@mbenny: buon punto. Ho aggiornato la risposta per riflettere questo. –

+12

È interessante notare che il tag META deve precedere qualsiasi tag SCRIPT nella sezione HEAD. – xero

5

IE non sarà mai in cache l'impostazione X-UA-compatibilità da solo. L'unica altra possibilità è che gli utenti del sito abbiano premuto il pulsante "Compatibility View" sulla barra degli indirizzi prima di aver impostato il meta tag X-UA-Compatibile. Quindi il dominio del tuo sito verrà visualizzato in un elenco archiviato localmente sul computer del cliente. Ho scritto un post sul blog su come i proprietari dei siti possono sfoltire i loro domini da quella lista memorizzata localmente se/quando un sito viene aggiornato per essere compatibile con IE8. http://blogs.msdn.com/ie/archive/2009/07/01/ie-compatibility-list-pruning.aspx

8

È anche possibile impostare l'intestazione X-UA-compatibile in Apache, tramite il file config o .htaccess utilizzando il codice riportato di seguito. Merito va a html5boilerplate.com

# ---------------------------------------------------------------------- 
# Better website experience for IE users 
# ---------------------------------------------------------------------- 

# Force the latest IE version, in various cases when it may fall back to IE7 mode 
# github.com/rails/rails/commit/123eb25#commitcomment-118920 
# Use ChromeFrame if it's installed for a better experience for the poor IE folk 

<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> 
# 
# Because X-UA-Compatible isn't sent to non-IE (to save header bytes), we need to inform proxies that content changes based on UA 
# 
    Header append Vary User-Agent 
# Cache control is set only if mod_headers is enabled, so that's unncessary to declare 
</IfModule> 
5

So che questo post è vecchio, ma trovo l'aggiunta di questo al vostro file .htaccess:

Header set X-UA-Compatible "IE=edge" 

... per essere più gestibile di aggiungerlo alle pagine.

La speranza che aiuta qualcuno.

Problemi correlati