Actualizado 2008-08-28: Actualizado para Internet Explorer 8 (funciona en la beta 2).
Actualizado 2009-03-03: Incompatibilidad con IE6 XP SP3.
Supersencillo:
var ieVer=/*@cc_on function(){ switch(@_jscript_version){ case 1.0:return 3; case 3.0:return 4; 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 8; }}()||@*/0;
if(/MSIE 6.0/i.test(navigator.userAgent)) {ieVer=6;}
/*@cc_on
abre el comentario condicional, y @*/
lo cierra. Lo que hay ahí dentro solo lo lee Internet Explorer.
Dentro de la zona de comentario condicional se establece que cada versión de Internet Explorer retorne un número. El 0, que queda fuera del comentario condicional, sirve para el resto de navegadores.
Si por ejemplo queremos que una determinada función funcione solo para Internet Explorer 6 y anteriores se le da una condición de que la ejecute solo para el valor de variable ieVer igual o menor que 6:
if (ieVer<=6) {funcionEjecutada();}
Internet Explorer 6 en XP SP3
En esta configuración Internet Explorer 6 devuelve los mismos valores que Internet Explorer 7, por lo que este script pierde en gran medida su sentido.
De todas formas se puede solventar añadiendo la siguiente línea:
if(/MSIE 6.0/i.test(navigator.userAgent)) {ieVer=6;}