2010-01-14 9 views
55

Acabo de actualizar mi sitio a un diseño más nuevo, mucho más compatible con los estándares. Mi diseño anterior era tan desagradable que tuve que usar la etiqueta IE = EmulateIE para forzar la emulación de IE7.Force IE8 * no * para usar la Vista de compatibilidad

Por desgracia, creo que los navegadores pueden almacenamiento en caché de esta configuración de visitas anteriores, haciendo que mi nuevo sitio (que se ve muy bien sin el botón pulsado) para buscar basura de nuevo ...

¿Hay alguna etiqueta opuesta a la que me podría utilizar, o algo de magia que puedo hacer que PHP haga a los encabezados HTTP, ¿desactivar el almacenamiento en caché de esta configuración?

+9

¿Sabes qué ?, pensé que había leído todas las preguntas anteriores sobre este tema, pero la pestaña a la derecha de esta tenía la respuesta: ¡Estuche cerrado! –

+6

Luego publícalo como una respuesta y acéptalo. Necesitaba la misma información y casi me perdí el comentario. Simplemente no olvides vincular a la "pestaña a la derecha" :) – AnonJr

+2

Puedes hacerlo como un encabezado HTTP real en lugar del HTML. Esto es mejor, ya que no hay nada que pueda copiar y pegar en sitios no compatibles. 'header ('X-UA-Compatible: IE = edge);' – TRiG

Respuesta

51

En ausencia de un encabezado http-equiv compatible con X-UA, el modo de compatibilidad viene determinado por !DOCTYPE (o la ausencia de un !DOCTYPE, según sea el caso). Para un gráfico de los cuales !DOCTYPE le da el modo (en varios navegadores) ver aquí:

http://hsivonen.iki.fi/doctype/ (que necesitará para desplazarse hacia la parte inferior de la página.)

Puede anular este comportamiento utilizando un elemento meta para especificar una cabecera http-equiv X-UA-Compatible, así: <meta http-equiv="X-UA-Compatible" content="IE=edge" >

(Nota: IE = borde va con la versión más alta disponible - en la actualidad IE8 a partir de esta publicación - o uno puede especificar explícitamente IE8.)

Para obtener más información, consulte aquí: http://msdn.microsoft.com/en-us/library/cc288325(VS.85).aspx

+7

En lugar de utilizar un gran número de aribirarity para la versión de IE, sería mejor usar la palabra clave compatible 'edge' para forzar siempre la última versión.

+0

@mbenny: Buen punto. He actualizado la respuesta para reflejar esto. –

+12

Es de destacar que la etiqueta META debe aparecer antes que las etiquetas SCRIPT en la sección HEAD. – xero

5

IE nunca almacenará en caché la configuración de compatibilidad X-UA por sí mismo. La única otra posibilidad es que los usuarios del sitio presionen el botón 'Vista de compatibilidad' en la barra de direcciones antes de que haya establecido la metaetiqueta X-UA-Compatbile. Luego, el dominio de su sitio aparecerá en una lista almacenada localmente en la máquina del cliente. Escribí una publicación de blog sobre cómo los propietarios de sitios pueden podar sus dominios de esa lista almacenada localmente si/cuando un sitio se actualiza para ser compatible con IE8. http://blogs.msdn.com/ie/archive/2009/07/01/ie-compatibility-list-pruning.aspx

8

También puede configurar el encabezado compatible con X-UA en Apache, a través de la configuración o un archivo .htaccess utilizando el siguiente código. El crédito 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

Sé que este post es viejo, pero me parece añadir esto a su archivo .htaccess:

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

... Para ser más manejable que añadirla a las páginas.

Espero que ayude a alguien.

Cuestiones relacionadas