除了另無它法,肯定不使用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 =
/*@cc_on!@*/
!
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
//https://developer.mozilla.org/En/Windows_Media_in_Netscape
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
//http://blog.webcreativepark.net/
2011
/
01
/
25
-173502
.html
isIPad = /iPad/i.test(navigator.userAgent);
isAndroid = /android/i.test(navigator.userAgent);
isIOS = isIPhone || isIPad ;
isMobile = isIOS || isAndroid ;