Cuando IE8 no es IE8, ¿qué es $ .browser.version?

IE8 puede entrar en modo IE7 si es necesario. ¿Cómo detecta esto jQuery? Específicamente, ¿cuál es el valor de $.browser.version ?

IE8 en modo IE7 reportará IE7. PERO puede analizar el agente de usuario y verificar “Trident / 4.0”. Si ves esta línea entonces trabajas con IE8

El $.browser obejct se llena utilizando un concepto conocido como Browser-Sniffing . En pocas palabras, este es el proceso de escaneo de datos de la cadena de agente de usuario que envían los navegadores, robots y cualquier otra cosa que acceda a la página.

Debido a la susceptibilidad del agente de usuario para falsificar, este objeto está en desuso en versiones posteriores de jQuery. La Detección de objetos y la Detección de características (ver $.support ) ahora se usan con preferencia.

Por ejemplo, Opera 8.5. utilizado para identificarse como IE: http://www.javascriptkit.com/javatutors/navigator.shtml

$ .support:

http://docs.jquery.com/Utilities/jQuery.support

Agentes de usuario:

http://en.wikipedia.org/wiki/User_agent

http://www.zytrax.com/tech/web/browser_ids.htm

Detección de objetos:

http://www.quirksmode.org/js/support.html http://developer.apple.com/internet/webcontent/objectdetection.html

Oler del navegador:

http://en.wikipedia.org/wiki/Browser_sniffing

Detección de características:

http://docs.jquery.com/Utilities/jQuery.support

Acabo de probar esto (acabo de descargar IE8)

Cuando pones IE8 en el modo de compatibilidad de IE7 con la meta etiqueta como esta:

  

¡El valor de $.browser.version sigue siendo 8.0!

JQuery solo puede ver lo que el navegador le dice.

En el modo IE7, el navegador se reportará a sí mismo como IE7, así que eso es lo que verá JQuery.

Soy un desarrollador de .NET y siempre me gusta usar una página Sessions.aspx que creé para este tipo de problemas

Siéntase libre de usarlo, también puedo compartir el código.

Como puedes ver en este screencast que acabo de hacer (14 segundos) obtienes el MSIE 8 y el MSIE 7 especificado en la propiedad del navegador javascript, cambian cuando cambias el modo de compatibilidad ya que el motor que muestra la página es ligeramente diferente (recuerda que es no 100% del motor IE7!)

en lugar de usar el método jQuery buit, solo usa el javascript normal

IE8 en modo IE7

4.0 (compatible; MSIE 7.0 ; Windows NT 6.0; WOW64; Trident / 4.0; GTB6; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.30618; .NET CLR 3.5.30729; InfoPath.2 ; OfficeLiveConnector.1.4; OfficeLivePatch.1.3)

IE8 en modo nativo

4.0 (compatible; MSIE 8.0 ; Windows NT 6.0; WOW64; Trident / 4.0; GTB6; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.30618; .NET CLR 3.5.30729; InfoPath.2 ; OfficeLiveConnector.1.4; OfficeLivePatch.1.3)

código:

 var browserVersion = navigator.appVersion.toLowerCase(); if(browserVersion.contains('msie 8') ) { // IE 8 } else if(browserVersion.contains('msie 7') ) { // IE 7 } 

Vídeo emitido en pantalla : http://www.balexandre.com/temp/showFlash.aspx?swf=2009-08-19_1138_ie8ie7.swf&w=952&h=742