debugging - mac - ¿Cómo puedo detectar si IE8 se está ejecutando en la vista de compatibilidad?
internet explorer emulator mac (9)
Creo que está contenido en la cadena del agente de usuario:
"Una nueva etiqueta en la cadena del agente de usuario permite la detección de clientes que miran su sitio en la Vista de compatibilidad. Esta etiqueta también está presente en la cadena" normal "del Agente de usuario de Internet Explorer 8".
"En el caso de que un usuario seleccione Vista de compatibilidad para su sitio, puede" devolverlos "al modo de diseño deseado mediante el uso de la etiqueta de orientación de la versión / encabezado HTTP. Se completa un nuevo valor de contenido, ''IE = EmulateIE8''. la lista de valores admitidos y ayuda en este escenario particular ".
Más información aquí: http://blogs.msdn.com/ie/archive/2008/08/27/introducing-compatibility-view.aspx
¿Hay alguna forma de determinar si un navegador IE8 tiene activada la vista de compatibilidad?
Parece que no puedo encontrar nada en Google, y me pregunto si esta es una información disponible ...
¿¡Porque preguntas!? Estoy intentando rastrear un error en nuestra aplicación. Estoy reconstruyendo los registros de Elmah y parece que hay una tendencia; este error generalmente es lanzado por IE8. Traté de volver a guardar el defecto en mi copia de IE8, pero no pude. Quiero reducir a los culpables, y pensé que esta podría ser una forma de hacerlo.
En Javascript, use document.documentMode
Consulte http://msdn.microsoft.com/en-us/library/cc196988%28VS.85%29.aspx para obtener detalles.
En MVC / ASP Request.Browser.Version devuelve "7.0" independientemente de la versión cuando está en la Vista de compatibilidad, de lo contrario, devuelve la versión del navegador.
También puede usar Request.Browser.Browser para verificar que sea IE
Request.Browser.Version
Request.Browser.Browser
Estoy usando:
try{ JSON } catch (e){ alert("Compatibility Mode Detected") }
El objeto JSON
se definió en IE 8
, por lo que en IE 7
o en Compatibility Mode
se produce un error y se captura.
Me gusta que esto funcione siempre y es una línea.
Evidentemente IE8 tiene algunas propiedades nuevas
document.documentMode
y
document.compatMode
http://msdn.microsoft.com/en-us/library/cc196988(VS.85).aspx
Método muy simple: presione F12, se abrirá la barra de herramientas del desarrollador. Después de los menús, verá el modo Navegador. Lo que claramente indicará que está en modo IE8 o en modo compatible con IE7.
Para expandir la respuesta de @ Tommy, use la detección de características (la alerta es opcional, por supuesto, uso un buen div o un mensaje en línea en alguna parte):
if(typeof document.documentMode !== ''undefined'') { // checks if this is IE 8 or >
if(document.documentMode < 8) { // check if in compat mode
// add code here to inform user that they need to turn off compatiblity view
alert("Click ALT-T then compat view etc...");
}
}
Verifique el "Trident / 4.0" en el userAgent. Debería estar presente solo para IE-8. http://social.msdn.microsoft.com/Forums/en-US/iewebdevelopment/thread/33e0ed49-11fb-4d91-857c-a35496e90075
if(preg_match(''/(?i)msie/'', $_SERVER[''HTTP_USER_AGENT''])) {
if(preg_match(''/(?i)Trident//5/'', $_SERVER[''HTTP_USER_AGENT''])) {
echo "IE9";
}
elseif(preg_match(''/(?i)Trident//4/'', $_SERVER[''HTTP_USER_AGENT''])) {
echo "IE8";
}
elseif(!preg_match(''/(?i)Trident//4/'', $_SERVER[''HTTP_USER_AGENT'']) AND preg_match(''/(?i)msie 7/'', $_SERVER[''HTTP_USER_AGENT''])) {
echo "IE7";
}
elseif(preg_match(''/(?i)msie [1-6]/'', $_SERVER[''HTTP_USER_AGENT''])) {
echo "IE1 à IE6";
}}