IE10 se procesa en modo IE7. ¿Cómo forzar el modo Estándar?

Resuelto firedev asked hace 12 años • 5 respuestas

En el sitio de Microsoft afirman que una simple declaración de tipo de documento es suficiente. Pero incluso un documento tan breve como este vuelve al modo IE7:

<!DOCTYPE html>
<html>
<head>
   <title></title>
</head>
<body>

</body>
</html>

http://d.pr/i/fvzb+

firedev avatar Nov 08 '12 14:11 firedev
Aceptado

Internet Explorer supone que la mayoría de las páginas web se escribieron para versiones anteriores de IE y analiza el tipo de documento, las metaetiquetas y el HTML para determinar el mejor modo de compatibilidad (a veces de forma incorrecta). Incluso con un tipo de documento HTML5, IE seguirá colocando su sitio web en modo de compatibilidad si es un sitio de intranet.

Para asegurarse de que su sitio web siempre utilice el modo de estándares más reciente, puede asegurarse de Display intranet sites in Compatiblyque esté desactivado. Sin embargo, debe hacer esto en cada máquina local del servidor web (las instrucciones se encuentran a continuación).

Alternativamente, y mejor aún, puedes usar el X-UA-Compatibleencabezado para desactivar esto desde el servidor. ¡Es importante tener en cuenta que usar la metaetiqueta no funcionará!

<!-- Doesn't always work! -->
<meta http-equiv="X-UA-Compatible" content="IE=edge" />

En MSDN se menciona que el uso de un encabezado de host o una metaetiqueta debería anular incluso los sitios de intranet. El artículo Comprender los modos de compatibilidad en Internet Explorer 8 dice lo siguiente.

Una gran cantidad de sitios web comerciales internos están optimizados para Internet Explorer 7, por lo que esta excepción predeterminada preserva esa compatibilidad. ... Nuevamente, si se usa una metaetiqueta o un encabezado http para establecer un modo de compatibilidad para el documento, anulará esta configuración.

Sin embargo, en la práctica esto no funcionará; usar un encabezado de host es la única opción que funciona. La sección de comentarios del artículo también muestra numerosos ejemplos de este problema exacto.

El uso de una metaetiqueta también tiene otros problemas, como ignorar la etiqueta si no está directamente debajo de la <head>etiqueta o si hay demasiados datos delante (4k). También puede provocar que el documento se vuelva a analizar en algunas versiones de IE, lo que ralentizará el procesamiento. Puede leer más sobre estos problemas en el artículo de MSDN Mejores prácticas: ponga su HEAD en orden .

Agregar el encabezado compatible con X-UA

Si está utilizando .NET e IIS, puede agregar esto al archivo web.config, también puede hacerlo mediante programación:

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

Si no estás usando IIS, es fácil hacerlo en cualquier idioma. Por ejemplo, aquí se explica cómo hacerlo en PHP:

header('X-UA-Compatible: IE=edge');

Mientras el X-UA-Compatibleencabezado esté presente con el tipo de documento HTML5, un sitio siempre se ejecutará en el modo de estándares más reciente.

Desactivar la Vista de compatibilidad
Aún puede resultar útil desactivar la Vista de compatibilidad. Para hacerlo, desmarque Display all intranet sites in compatibility viewla Configuración de Vista de compatibilidad.

Configuración de la vista de compatibilidad

Puede abrir esto presionando Altpara obtener el menú.

ingrese la descripción de la imagen aquí

Editar Esta respuesta también pertenece a IE9.

Daniel Little avatar Nov 08 '2012 10:11 Daniel Little

Esto funciona para mi..

<meta http-equiv="X-UA-Compatible" content="IE=edge" />
JGilmartin avatar May 24 '2013 09:05 JGilmartin

Intente agregar la siguiente etiqueta al encabezado

<meta http-equiv="X-UA-Compatible" content="IE=11,IE=10,IE=9,IE=8" />
Jeow Li Huan avatar Nov 08 '2012 07:11 Jeow Li Huan

La metaetiqueta no hace nada para los sitios de intranet y mi problema fue la representación de IE10 en modo de compatibilidad con IE10. Lo que solucionó el problema para mí fue llevar la respuesta de @Jeow más allá y usar ese valor en un encabezado http agregando lo siguiente en web.configIIS:

<system.webServer>
  <httpProtocol> 
    <customHeaders> 
      <clear />
      <!-- <add name="X-UA-Compatible" value="IE=edge" /> not good enough -->
      <add name="X-UA-Compatible" value="IE=11,IE=10,IE=9,IE=8" /> 
    </customHeaders> 
  </httpProtocol>
</system.webServer>

Para propósitos de IE, los sitios de intranet incluyen sitios públicos que no están enrutados externamente; por ejemplo, un empleado de Stackoverflow que trabaja desde la oficina probablemente vería stackoverflow.com en modo de compatibilidad.

Oleg avatar Mar 06 '2014 02:03 Oleg