除了另无它法,肯定不使用navigator.userAgent来判定浏览器。因为在第一次浏览器大战初期,Netscape占绝对统计地位,大部分人们不愿意兼容其他浏览器,并通过检测其UA让他们的网站只允许Netscape访问,这就逼使其他浏览器(包括IE)修改自己的UA伪装成Netscape来通过那些自以为是的脚本,于是出现每个人都声称自己是别人的局面,即使最新的IE9的UA也是:
//Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/5.0) 
 
 | 
 
 
 
//2010 4 16日更新 
        ie = !+"\v1" ; 
        ie = !-[1,];//IE9预览版中失效 
        ie ='\v'=='v' ; 
        ie = !!document.recalc 
        ie = !!window.VBArray 
        ie = !!window.ActiveXObject 
        ie = 0//@cc_on+1; 
        ie = !!window.createPopup; 
        ie = !1; 
        ie = document.expando;//document.all在opera firefox的古老版本也存在 
        ie = /\w/.test('\u0130') //由群里的abcd友情提供 
         
        ie6 = !"1"[0] //利用IE6或IE5的字符串不能使用数组下标的特征 
        ie8 = !!window.XDomainRequest; 
        ie9 =  document.documentMode && document.documentMode === 9; 
        //自创,基于条件编译的嗅探脚本,IE会返回其JS引擎的版本号,非IE返回0 
        var ieVersion = eval("''+/*@cc_on"+" @_jscript_version@*/-0")*1 
        ie9 = ieVersion === 5.9 
        ie8 = ieVersion === 5.8 
        ie7 = ieVersion === 5.7 
        ie6 = ieVersion === 5.6 
        ie5 = ieVersion === 5.5 
        netscape = !!window.GeckoActiveXObject  
        gecko  = !!window.netscape //包括firefox 
        firefox = !!window.Components 
        firefox = !!window.updateCommands 
        safari = !!(navigator.vendor && navigator.vendor.match(/Apple/)) 
        safari = window.openDatabase && !window.chrome; 
        chrome= !!(window.chrome && window.google) 
        opera=!!window.opera ; 
        //傲游2 3 
        maxthon = /maxthon/i.test(navigator.userAgent) 
        //360安全浏览器 
        is360se = /360se/i.test(navigator.userAgent) 
 
 | 
 
 
//2010.6.4 
       setTimeout(function(){//FF的setTimeout总是有一个额余的参数0 
          var isFF = !!arguments.length; 
          alert(isFF) 
        }, 0); 
 
 | 
 
 
//判定IE版本 
2010.10.1 
      ie = (function(undefined){ 
        var v = 3, div = document.createElement('div'); 
        while ( 
        div.innerHTML = '<!--[if gt IE '+(++v)+']><i></i><![endif]-->', 
        div.getElementsByTagName('i')[0]); 
        return v> 4 ? v : undefined; 
      }()); 
 
 | 
 
 
//判定IE版本 2011.2.24 
       ie = (function() { 
          var v = 3, div = document.createElement('div'), a = div.all || []; 
          while (div.innerHTML = '<!--[if gt IE '+(++v)+']><br><![endif]-->', a[0]); 
          return v > 4 ? v : !v; 
        }()); 
 
 | 
 
 
//手机的相关判定 2011.9.21 
 isIPhone = /iPhone/i.test(navigator.userAgent); 
 isIPhone4 = window.devicePixelRatio >= 2 
//在网页中,pixel与point比值称为device-pixel-ratio,普通设备都是1,iPhone 4是2,有些Android机型是1.5 
 isIPad = /iPad/i.test(navigator.userAgent); 
 isAndroid = /android/i.test(navigator.userAgent); 
 isIOS = isIPhone  || isIPad ; 
 
 | 
 
 
isMobile = isIOS || isAndroid ;