Javascript, detectar la versión de Internet Explorer
Como hace mucho que no escribo, voy a hacerlo comentando algo que he necesitado hoy en el curro, que es identificar la versión de internet explorer para poder realizar una función u otra, que sabemos que no va a ser compatible en una versión y en otra si, vamos, lo típico.
Una manera es a partir de la versión de javascript, la cual no es muy fiable.
El código que nos sirve para almacenar la versión en una variable es el siguiente:
1 2 | var ieVer=/*@cc_on function(){ switch(@_jscript_version){ case 1.0:return 1; case 3.0:return 3; case 5.0:return 5; case 5.1:return 5; case 5.5:return 5.5; case 5.6:return 6; case 5.7:return 7; case 5.8:return 5.8; }}()||@*/0; if(/MSIE 6.0/i.test(navigator.userAgent)) {ieVer=6;} |
Las instrucciones entre /*@cc_on y */ son comentarios condiciones (y que ni yo sabía que existía tal cosa) y por lo visto es tan poco estándar que sólo internet explorer lo lee, así que de entrada ignoramos que otros navegadores se metan por ahí y la lien. De este modo valdrá 0 para el resto de navegadores (y podemos entonces comparar la versión de éstos de otras maneras).
La parte dentro del comentario chungo este, asocia un valor a cada versión del IE, de este modo, la versión 1 devuelve 1, la versión 3 devuelve 3, etc…
Se comprueba hasta el 5.8, luego el 6 se comprueba fuera del comentario. La versión 7 y 8 del Internet Explorer devuelve 7 u 8 según proceda pese a no estar contenplado en el código (intuyo que va implícito en la versión de javascript que implementen).
Así, para comprobar si el navegador es inferior a una versión, solo hay que hacer:
1 | if (ieVer<=6) {funcionEjecutada();} |
Otro método más fiable es parsear con una expresión regular la versión del navegador. El código es el siguiente:
1 | function vIE(){return (navigator.appName=='Microsoft Internet Explorer')?parseFloat((new RegExp("MSIE ([0-9]{1,}[.0-9]{0,})")).exec(navigator.userAgent)[1]):-1;} |
Devuelve la versión de internet explorer devuelta por la variable UserAgent en caso de ser Internet Explorer o -1 para el resto de navegadores (curioso que el appName del firefox sea el difunto Netscape aunque luego en el userAgent se indique Firefox).
Fuente:outbook


Recent Comments