Necesito saber si el navegador que se identifica a sí mismo a través de la cadena de agente de usuario como IE7 o IE8 es realmente esos navegadores, o si es IE9 en modo de compatibilidad 7 u 8.
Por lo que puedo ver en la cadena del agente de usuario, un IE9 en el modo de compatibilidad con IE7 proporciona una cadena idéntica a un IE7 real. ¿Hay alguna propiedad / elemento / objeto adicional que pueda probar para ver si es "realmente" IE9 disfrazado?
Supongo que el modo de documento no ayudará ya que la página en la que se carga mi script podría estar forzando peculiaridades o forzando una configuración específica.
Espero que IE9 tenga alguna propiedad que exista y sea comprobable independientemente de si está en modo 7, 8 o 9.
Editado para agregar…
Bien, ahora veo dónde estaba yendo mal. Estaba usando el menú desplegable "Modo de navegador" y lo cambiaba a IE8 e IE7 y pensaba que este era "modo de compatibilidad de IE8" y "modo de compatibilidad de IE7" respectivamente. Por supuesto que esto no es cierto. El modo de navegador de las herramientas de desarrollo realmente lo está cambiando a "ser como" esos viejos navegadores, por lo que es correcto que se informe sobre las cadenas de agentes de usuario originales.
Si dejo el modo de navegador en compatibilidad con IE9 o IE9 y pruebo las variantes desplegables del modo de documento en su lugar, de hecho obtengo "Trident / 5.0" presente en las 8 combinaciones (dos modos de navegador y 4 modos de documento). Solo necesito evitar elegir el modo de navegador IE7 e IE8 porque realmente son (simulados) IE7 e IE8.
Por lo tanto, no hay forma de que una página, un usuario que no sea desarrollador, una metaetiqueta o la lista de compatibilidad de Microsoft pueda poner IE9 en este estado no identificable.
Bastará con usarlo if(navigator.userAgent.indexOf("Trident/5")>-1)
.
No se preocupe, esto no es por estilos, formato, lógica o contenido de la página. Utilizo la detección de funciones para esas cosas. Solo necesito detectar IE9 (independientemente del modo en el que esté) y tomar una decisión sobre el contenido que no sea de la página al respecto.
Gracias por orientarme hacia la respuesta con sus sugerencias y enlaces.