the some predeterminado page not modo may internet features emulate documento change cambiar available attached apis and internet-explorer-8 backwards-compatibility ie8-compatibility-mode

internet explorer 8 - some - Detectar el modo de compatibilidad de IE8



the attached page targets document mode 7 (5)

Debe verificar el valor de document.documentMode, que tendrá un valor de 8 en el modo verdadero IE8 y 7 en el modo IE7. La cadena de agente de usuario será idéntica en ambos casos y seguirá indicando IE8. Tenga en cuenta que esta variable de JavaScript solo está disponible en IE8.

Posible duplicado:
Diferencie el navegador IE7 y el navegador en el modo de compatibilidad IE7

No hemos tenido tiempo de probar IE8 completamente con nuestro sistema bastante extenso. También estamos llegando al punto en el que no podemos prohibir el uso de IE8. Nuestros usuarios son tercos y no son demasiado sofisticados, por lo que no sentimos que podamos decirles que usen el botón "Modo de compatibilidad". En su lugar, agregaremos la meta etiqueta "IE = EmulateIE7" como una solución temporal .

El problema es que cuando se usa esta etiqueta, el navegador aún se informa a sí mismo como IE8, que luego es detectado por nuestras páginas y rechazado. Puedo entender por qué la detección del lado del servidor no puede recoger la metaetiqueta (el servidor ya tiene el agente de usuario antes de enviar y procesar la metaetiqueta), pero las verificaciones del lado del cliente también fallan. Si se hace clic en el botón de modo de compatibilidad en las máquinas cliente, el agente de usuario es IE7, pero no si usamos la etiqueta meta.

Esto significa, entre otras cosas, que tenemos que deshabilitar la comprobación y luego, si cometemos un error en algún lugar y olvidamos agregar la etiqueta meta a una página, tendremos páginas rotas.

¿Alguien más ha encontrado esto y ha encontrado un mejor enfoque? ¿No hay forma de detectar que IE8 se está ejecutando en modo de compatibilidad cuando la etiqueta meta establece el modo?

Y, sí sabemos que existe una escuela de pensamiento válida de que deberíamos hacer que todas las páginas sean compatibles con el modo de Estándares IE8, pero en nuestro pequeño rincón de la realidad, esa no es una opción viable en este momento (y señalaré que no creamos 4 o 5 versiones de IE que debían escribirse de forma no estándar).


El problema es aún más complejo cuando se trata de enlaces que llegan a su sitio desde sitios de BLACKLIST de emulación de IE8, como Facebook.

Un enlace compartido en Facebook hace que sus enlaces se abran en una ventana emergente: SI LA "INCLUIR ACTUALIZACIONES DE ACTUALIZACIÓN" está marcada en la configuración de la vista de compatibilidad, que está marcada de manera predeterminada, la ventana emergente ve al remitente de la lista negra de Facebook y abre la ventana en la lista negra modo inicialmente Al detectar en segundo plano para Trident / 4.0, verá el valor y establecerá el nivel inferior de CSS.

Sin embargo, después de que el navegador se cargue, saldrá del modo Compat y cambiará al modo ESTÁNDAR sin actualizar. Por lo tanto, tiene el CSS incorrecto para los modos estándar asignados.

Solución: haga que el navegador IE salga del modo de compatibilidad. Sí, parece extraño, ¿por qué permitir que un usuario baje de nivel en su sitio si no lo necesita?

Al igual que en Downlevel, establece IE = EmulateI7 para forzar el navegador hacia abajo, puede agregar IE = EmulateIE8 y obligar al usuario a ver su página en IE8 Standard. este modo incluso elimina su capacidad para seleccionar Vista de compatibilidad y reducir sus necesidades de prueba para ese modo


IE8 incluye un token de tridente en la cadena User-Agent, independientemente del modo de compatibilidad.

Consulte MSDN para obtener más detalles: http://blogs.msdn.com/ie/archive/2009/01/09/the-internet-explorer-8-user-agent-string-updated-edition.aspx

IE7 en Windows Vista
Mozilla / 4.0 (compatible; MSIE 7.0 ; Windows NT 6.0)

IE8 en Windows Vista (Vista de compatibilidad)
Mozilla / 4.0 (compatible; MSIE 7.0 ; Windows NT 6.0; Trident / 4.0 )

IE8 en Windows Vista
Mozilla / 4.0 (compatible; MSIE 8.0 ; Windows NT 6.0; Trident / 4.0 )


No es exactamente "detectar el modo de compatibilidad de IE8", pero podría ayudar de la misma manera:

Si tiene acceso al servidor en sí, puede enviar un encabezado HTTP, eche un vistazo al blog de Mike Ormond al respecto . La página de MSDN para Implementar el Interruptor Meta en IIS tiene detalles del encabezado y cómo configurarlo / enviarlo.