2011-09-04 14 views
8

No entiendo en absoluto lo es para <meta http-equiv="X-UA-Compatible" content="..." /> ...¿Cuál es el punto de X-UA-Compatible?

¿Puede alguien explicar ...

  • Lo que hace para diferentes valores de content?
  • ¿Qué omisión hace para diferentes navegadores?
  • ¿Cuál es la motivación para ello?
  • ¿Por qué existe?
+1

Bueno, ¿cuáles son esos valores diferentes de 'content'? – BoltClock

+0

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

Respuesta

14

Es un hack horrible para atender a diferentes errores o implementaciones incompletas en varias versiones del navegador Internet Explorer. Por ejemplo, esto:

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

instruirán IE9 a fingir que es realmente IE7 para evitar cualquier problema que pueda ocurrir si su sitio funciona en IE7, pero no IE9.

+1

Usar los modos de compatibilidad hacia atrás de IE deliberadamente es de hecho algo muy difícil de justificar, es mejor evitarlo a toda costa. Sin embargo, es importante tener en cuenta que' content = "IE = Edge" 'puede ser útil, ya que evitará problemas con modo compat: en los casos en que IE está configurado para usar el modo de compatibilidad de manera predeterminada, usar 'IE = edge' obligará a IE a volver al modo estándar. – Spudley

+0

También tenga en cuenta que en los sitios de intranet puede necesitar llamar a esto para deshabilitar el modo de compatibilidad. mira para más detalles: https://stackoverflow.com/a/26348511/601197 – AhsenB

21

Esta metaetiqueta (o encabezado http) solo tiene significado para IE8 y superior. Es una forma de obligar a IE a renderizar la página como lo haría una versión anterior. Omitirlo no tiene ningún efecto, solo como efecto si se usa.

Los valores posibles son "IE =" seguido por cualquiera de los siguientes:

  • Edge - Render como cualquiera que sea la última versión de IE es
  • IE9 - Render como IE9 en el modo de estándares
  • Emular IE9 - Render como IE9 pero el uso de la <!DOCTYPE> para determinar el modo
  • IE8 - Render como IE8 en modo estándar
  • Emular IE8 - Render como IE8, pero utilizar el <!DOCTYPE> para determ ine el modo
  • IE7 - Render como Internet Explorer 7 en el modo de estándares
  • Emular Internet Explorer 7 - Render como IE7 pero el uso de la <!DOCTYPE> para determinar el modo
  • IE5 - Render como Internet Explorer 7 en el modo de peculiaridades

Adicionalmente , puede agregar una coma seguida de Chrome = 1 para decirle a IE que represente la página usando Google Chrome Frame si está instalada. Lo que podría tener una etiqueta que tiene este aspecto:

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

O, en vez de eso, también se puede especificar el uso de GCF para una versión específica de IE y por debajo de la siguiente manera:

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

Lo que significa usar GCF si está instalado e IE está en la versión 8 o inferior, de lo contrario, renderizado como la última versión instalada de IE.

Por lo tanto, es obvio que es útil poder hacer que las versiones anteriores de IE usen GCF, pero esa no era probablemente la intención de Microsoft cuando implementaron esto. Se puede usar para compatibilidad con sitios antiguos que solo funcionan en versiones anteriores de IE y no se pueden reparar fácilmente, pero eso es un poco tonto. Personalmente, me parece útil para probar.Dado que generalmente no es tan simple probar varias versiones de IE desde una sola máquina de desarrollo, esto proporciona una solución decente.

+3

Excelente respuesta, pero los lectores deben saber que [Google Chrome Frame se retiró en Janurary 2014] (http://blog.chromium.org/2013/06/retiring-chrome-frame.html) –