除了另无它法,肯定不使用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 ,];//IE 9 预览版中失效
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友情提供
ie 6 = ! "1" [ 0 ] //利用IE 6 或IE 5 的字符串不能使用数组下标的特征
ie 8 = !!window.XDomainRequest;
ie 9 = document.documentMode && document.documentMode === 9 ;
//自创,基于条件编译的嗅探脚本,IE会返回其JS引擎的版本号,非IE返回 0
var ieVersion = eval( "''+/*@cc_on" + " @_jscript_version@*/-0" )* 1
ie 9 = ieVersion === 5.9
ie 8 = ieVersion === 5.8
ie 7 = ieVersion === 5.7
ie 6 = ieVersion === 5.6
ie 5 = 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 安全浏览器
is 360 se = / 360 se/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);
isIPhone 4 = 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 ;