В след за статьей CSS хаки для браузеров, не плохо было бы продолжить тему обнаружения браузеров. Так, в результате экспериментов Gareth Heyes, была создана статья по обнаружению браузеров, но на JavaScript. В то время, как он тестировал Hackvertor и писал инспекционные функции. Смотрим...
1. Переменные должны быть сокращениями названий браузеров, например, FF, IE, Op, Saf, Chr.
2. Обнаружение не должно быть перезаписано. Например, IE=!!top.execScript не верно, потому что сайт может переназначить execScript, как переменную или функцию.
3. Меньше и как можно быстрее.
JavaScript
//Firefox detector 2/3 by DoctorDan
FF=/a/[-1]=='a'
//Firefox 3 by me:-
FF3=(function x(){})[-5]=='x'
//Firefox 2 by me:-
FF2=(function x(){})[-6]=='x'
//IE detector
IE='\v'=='v'
//Safari detector
Saf=/a/.__proto__=='//'
//Chrome
Chr=/source/.test((/a/.toString+''))
//Opera
Op=/^function \(/.test([].sort)
//IE6 detector using conditionals
try {IE6=@cc_on @_jscript_version < = 5.7&&@_jscript_build<10000} catch(e){IE6=false;}
//All
B=(function x(){})[-5]=='x'?'FF3':(function x(){})[-6]=='x'?'FF2':/a/[-1]=='a'?'FF':'\v'=='v'?'IE':/a/.__proto__=='//'?'Saf':/s/.test(/a/.toString)?'Chr':/^function \(/.test([].sort)?'Op':'Unknown'
Если вы нашли, какие либо неточности, отпишите, пожалуйста в комментариях.