28 enero, 2009

32 bytes para identificar a IE

try{IE=window=!1}catch(e){IE=!0}
Con el resultado esperado en sólo 32 bytes: IE==1 sólo si se ejecuta desde Internet Explorer.
Gracias a Andrea Giammarchi. Addendum: En Ajaxian hacen referencia a este asunto y se ha abierto una auténtica batalla en los comentarios para conseguir algo aún más corto:
IE='\v'=='v' // El JScript de IE no soporta el tabulador vertical "\v" (12 bytes)
IE=top.execScript?1:0
Addendum: En The Spanner extienden la idea para el resto de navegadores, tratando de encontrar la secuencia más corta de identificar un navegador concreto (via).
FF=/a/[-1]=='a' //Firefox

FF3=(function x(){})[-5]=='x' //Firefox 3

FF2=(function x(){})[-6]=='x' //Firefox 2

IE='\v'=='v' //IE

Saf=/a/.__proto__=='//' //Safari

Chr=/source/.test((/a/.toString+'')) //Chrome

Op=/^function \(/.test([].sort) //Opera

2 comentarios:

Aleko dijo...

Best way:

!-[1,]

Àl dijo...

Aleko, muy, muy bueno! [pretty good!]

Gracias.

Publicar un comentario en la entrada

Últimos links en indiza.com