В след за статьей CSS хаки для браузеров, не плохо было бы продолжить тему обнаружения браузеров. Так, в результате экспериментов Gareth Heyes, была создана статья по обнаружению браузеров, но на JavaScript. В то время, как он тестировал Hackvertor и писал инспекционные функции. Смотрим...
1. Переменные должны быть сокращениями названий браузеров, например, FF, IE, Op, Saf, Chr.
2. Обнаружение не должно быть перезаписано. Например, IE=!!top.execScript не верно, потому что сайт может переназначить execScript, как переменную или функцию.
3. Меньше и как можно быстрее.
JavaScript
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
//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' |
Если вы нашли, какие либо неточности, отпишите, пожалуйста в комментариях.
Перевод статьи с