Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
var b = [(!(/opera|webtv/i.test(ua))&&/msie\s(\d)/.test(ua))?('ie ie'+RegExp.$1 + (is('trident')&&is('msie 7.0') ? ' compat':'')):is('firefox/2')?g+' ff2':is('firefox/3')?g+' ff3':is('firefox/4')?g+' ff5':is('firefox/5')?g+' ff5':is('gecko/')?g:/opera(\s|\/)(\d+)/.test(ua)?'opera opera'+RegExp.$2:is('konqueror')?'konqueror':is('chrome')?w+' '+s+' chrome':is('applewebkit/')?w+' '+s+(/version\/(\d+)/.test(ua)?' '+s+RegExp.$1:''):is('mozilla/')?g:'',is('j2me')?'mobile':is('iphone')?'iphone':is('ipod')?'ipod':is('mac')?'mac':is('darwin')?'mac':is('webtv')?'webtv':is('win')?'win'+(is('windows nt 5.1')?' xp':(is('windows nt 5.1')?' vista':(is('windows nt 6.1')?' win7':''))):is('freebsd')?'freebsd':(is('x11')||is('linux'))?'linux':'','js'];Now they have two problems.// Useragent RegExp
rwebkit = /(webkit)[ \/]([\w.]+)/,
ropera = /(opera)(?:.*version)?[ \/]([\w.]+)/,
rmsie = /(msie) ([\w.]+)/,
rmozilla = /(mozilla)(?:.*? rv:([\w.]+))?/;
ua = ua.toLowerCase();
var match = rwebkit.exec( ua ) ||
ropera.exec( ua ) ||
rmsie.exec( ua ) ||
ua.indexOf("compatible") < 0 && rmozilla.exec( ua ) ||
[];
return { browser: match[1] || "", version: match[2] || "0" }; Да, он не определяет платформу, но его легко модифицировать для этой цели. А если придется править ваш код, только на разбор регекспов часа два уйдёт.<!doctype html>
<!--[if lt IE 7]> <html class="no-js ie6 oldie" lang="en"> <![endif]-->
<!--[if IE 7]> <html class="no-js ie7 oldie" lang="en"> <![endif]-->
<!--[if IE 8]> <html class="no-js ie8 oldie" lang="en"> <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en"> <!--<![endif]-->
<head>
<script>
(function(H){H.className=H.className.replace(/\bno-js\b/,'js')})(document.documentElement);
</script>
...
</head>
html и не должно быть атрибута class — по двум причинам. Во-первых, это противоречит самому понятию класса, его семантике, то есть духу самой же спецификации HTML. Класс предназначен для выделения и адресации некой совокупности элементов, а данный элемент уже уникален и таким образом доступен для адресации. Во-вторых, стилизуем-то мы всё равно не html, а body.body, во всяком случае, пока CSS не дорос до XPath) или атрибут data-*, а ещё лучше, если бы в CSS был псевдокласс типа :browser(). Ну, это так, мечты.
CBS или упрощенный вид стилизирования и написания скриптов в ваших проектах