/* A idéia é colocar uma classe na tag <HTML> com o nome do navegador utilizado, o JS dá suporte aos seguintes Browsers:

.ie – Internet Explorer (All versions)
.ie8 – Internet Explorer 8.x
.ie7 – Internet Explorer 7.x
.ie6 – Internet Explorer 6.x
.ie5 – Internet Explorer 5.x
.gecko – Mozilla, Firefox (all versions), Camino
.ff2 – Firefox 2
.ff3 – Firefox 3
.opera – Opera (All versions)
.opera8 – Opera 8.x
.opera9 – Opera 9.x
.konqueror – Konqueror
.webkit or safari – Safari, NetNewsWire, OmniWeb, Shiira, Google Chrome
.chrome – Google Chrome

Imagina que agora na herança você tem uma classe com o nome do browser, basta agora você colocar uma classe antes do seletor que você deseja fazer o hack.

Exemplo:

 .ie  .example {
  background-color:  yellow;
  }
  .ie7  .example {
  background-color:  Orange;
  }
  .gecko  .example {
  background-color:  Gray;
  }
  .win.gecko  .example {
  background-color:  Red;
  }
  .linux.gecko  .example {
  background-color:  Pink;
  }
  .opera  .example {
  background-color:  Green;
  }
  .konqueror  .example {
  background-color:  Blue;
  }
  .safari  .example {
  background-color:  Black;
  }
  .chrome  .example {
  background-color:  Cyan;
  }
  .example  {
  width:  100px;
  height:  100px;
  border:  1px solid black;
}

<div class=”example”>Teste</div>

<script src="css_browser_selector.js" type="text/javascript"></script>

Uma forma simples de fazer, e que evita o uso de hack’s que poluem o código, e atrapalham na validação. */
function css_browser_selector(u){var ua = u.toLowerCase(),is=function(t){return ua.indexOf(t)>-1;},g='gecko',w='webkit',s='safari',o='opera',h=document.getElementsByTagName('html')[0],b=[(!(/opera|webtv/i.test(ua))&&/msie\s(\d)/.test(ua))?('ie ie'+RegExp.$1):is('firefox/2')?g+' ff2':is('firefox/3.5')?g+' ff3 ff3_5':is('firefox/3')?g+' ff3':is('gecko/')?g:is('opera')?o+(/version\/(\d+)/.test(ua)?' '+o+RegExp.$1:(/opera(\s|\/)(\d+)/.test(ua)?' '+o+RegExp.$2:'')):is('konqueror')?'konqueror':is('chrome')?w+' chrome':is('iron')?w+' iron':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('freebsd')?'freebsd':(is('x11')||is('linux'))?'linux':'','js']; c = b.join(' '); h.className += ' '+c; return c;}; css_browser_selector(navigator.userAgent);
