验证浏览器是什么东东的代码,来至《JavaScript高级程序设计》一书
var
sUserAgent
=
navigator.userAgent;
var
fAppVersion
=
parseFloat(navigator.appVersion);
function
compareVersion(sVersion1, sVersion2)
...
{ var aVersion1 = sVersion.split( " . " ); var aVersion2 = sVersion.split( " . " ); if (aVersion1.length > aVersion2.length) ... { for ( var i = 0 ; i < aVersion1.length - aVersion2.length; i ++ ) ... { aVersion2.push( " 0 " ); } } else if (aVersion1.length < aVersion2.length) ... { for ( var i = 0 ; i < aVersion2.length - aVersion1.length; i ++ ) ... { aVersion1.push( " 0 " ); } } for ( var i = 0 ; i < aVersion1.length; i ++ ) ... { if (aVersion1[i] < aVersion2[i]) ... { return - 1 ; } else if (aVersion1[i] > aVersion2[i]) ... { return 1 ; } } return 0 ; }
var
isOpera
=
sUserAgent.indexOf(
"
Opera
"
)
>
-
1
;
var
isMinOpera4
=
isMinOpera5
=
isMinOpera6
=
isMinOpera7
=
isMinOpera7_5
=
false
;
if
(isOpera)
...
{ var fOperaVersion; if (navigator.appName == " Opera " ) ... { fOperVersion = fAppVersion; } else ... { var reOperaVersion = new RegExp( " Opera (/d+/./d+) " ); reOperaVersion.test(sUserAgent); fOperationVersion = parseFlot(RegExp[ " $1 " ]); } isMinOpera4 = fOperaVersion >= 4 ; isMinOpera5 = fOperaVersion >= 5 ; isMinOpera6 = fOperaVersion >= 6 ; isMinOpera7 = fOperaVersion >= 7 ; isMinOpera7_5 = fOperaVersion >= 7.5 ; }
var
isKHTML
=
sUserAgent.indexOf(
"
KHTML
"
)
>
-
1
||
sUserAgent.indexOf(
"
Konqueror
"
)
>
-
1
||
sUserAgent.indexOf(
"
AppleWebKit
"
)
>
-
1
;
var
isMinSafari1
=
isMinSafari1_2
=
false
;
var
isMinKonq2_2
=
isMinKonq3
=
isMinKonq3_1
=
isMinKonq3_2
=
false
;
if
(isKHTML)
...
{ isSafari = sUserAgent.indexOf( " AppleWebKit " ) > - 1 ; isKonq = sUserAgent.indexOf( " Konqueror " ) > - 1 ; if (isSafari) ... { var reAppleWebKit = new RegExp( " AppleWebKit//(/d+(?:/./d*)?) " ); reAppleWebKit.test(sUserAgent); var fAppleWebKitVersion = parseFloat(RegExp[ " $1 " ]); isMinSafari1 = fAppleWebKitVersion >= 85 ; isMinSafari1_2 = fAppleWebKitVersion >= 124 ; } else if (isKonq) ... { var reKonq = new RegExp( " Konqueror//(/d+(?:/./d+(?:/./d)?)?) " ); reKonq.test(sUserAgent); isMinKonq2_2 = compareVersion(RegExp[ " $1 " ], " 2.2 " ) >= 0 ; isMinKonq3 = compareVersion(RegExp[ " $1 " ], " 3.0 " ) >= 0 ; isMinKonq3_1 = compareVersion(RegExp[ " $1 " ], " 3.1 " ) >= 0 ; isMinKonq3_2 = compareVersion(RegExp[ " $1 " ], " 3.2 " ) >= 0 ; } }
var
isIE
=
sUserAgent.indexOf(
"
compatible
"
)
>
-
1
&&
sUserAgent.indexOf(
"
MSIE
"
)
>
-
1
&&
!
isOpera;
var
isMinIE4
=
isMinIE5
=
isMinIE5_5
=
isMinIE6
=
false
;
if
(isIE)
...
{ var reIE = new RegExp( " MSIE (/d+/./d+); " ); reIE.test(sUserAgent); var fIEVersion = parseFloat(RegExp[ " $1 " ]); isMinIE4 = fIEVersion >= 4 ; isMinIE5 = fIEVersion >= 5 ; isMinIE5_5 = fIEVersion >= 5.5 ; isMinIE6 = fIEVersion >= 6.0 ; }
var
isMoz
=
sUserAgent.indexOf(
"
Gecko
"
)
>
-
1
;
var
isMinMoz1
=
isMinMoz1_4
=
isMinMoz1_5
=
false
;
if
(isMoz)
...
{ var reMoz = new RegExp( " rv:(/d+/./d+(?:/./d+)?) " ); reMoz.test(sUserAgent); isMinMoz1 = compareVersion(RegExp[ " $1 " ], " 1.0 " ) >= 0 ; isMinMoz1_4 = compareVersion(RegExp[ " $1 " ], " 1.4 " ) >= 0 ; isMinMoz1_5 = compareVersion(RegExp[ " $1 " ], " 1.5 " ) >= 0 ; }
var
isNS4
=
!
isIE
&&
!
isOpera
&&
!
isMoz
&&
!
isKHTML
&&
(sUserAgent.indexOf(
"
Mozilla
"
)
==
0
)
&&
(navigator.appName
==
"
Netscape
"
)
&&
(fAppVersion
>=
4.0
&&
fAppVersion
<
5.0
);
var
isMinNS4
=
isMinNS4_5
=
isMinNS4_7
=
isMinNS4_8
=
false
;
if
(isNS4)
...
{ isMinNS4 = true ; isMinNS4_5 = fAppVersion >= 4.5 ; isMinNS4_7 = fAppVersion >= 4.7 ; isMinNS4_8 = fAppVersion >= 4.8 ; }
var
isWin
=
(navigator.platform
==
"
Win32
"
)
||
(navigator.platform
==
"
Windows
"
);
var
isMac
=
(navigator.platform
==
"
Mac68K
"
)
||
(navigator.platform
==
"
MacPPC
"
)
||
(navigator.platform
==
"
Macintosh
"
);
var
isUnix
=
(navigator.platform
==
"
X11
"
)
&&
!
isWin
&&
!
isMac;
var
isWin95
=
isWin98
=
isWinNT4
=
isWin2K
=
isWinME
=
isWinXP
=
false
;
var
isMac68K
=
isMacPPC
=
false
;
var
isSunOS
=
isMinSunOS4
=
isMinSunOS5
=
isMinSunOS5_5
=
false
;
if
(isWin)
...
{ isWin95 = sUserAgent.indexOf( " Win95 " ) > - 1 || sUserAgent.indexOf( " Windows 95 " ) > - 1 ; isWin98 = sUserAgent.indexOf( " Win98 " ) > - 1 || sUserAgent.indexOf( " Windows 98 " ) > - 1 ; isWinME = sUserAgent.indexOf( " Win 9x 4.90 " ) > - 1 || sUserAgent.indexOf( " Windows ME " ) > - 1 ; isWin2K = sUserAgent.indexOf( " Windows NT 5.0 " ) > - 1 || sUserAgent.indexOf( " Windows 2000 " ) > - 1 ; isWinXP = sUserAgent.indexOf( " Windows NT 5.1 " ) > - 1 || sUserAgent.indexOf( " Windows XP " ) > - 1 ; isWinNT4 = sUserAgent.indexOf( " WinNT " ) > - 1 || sUserAgent.indexOf( " Windows NT " ) > - 1 || sUserAgent.indexOf( " WinNT4.0 " ) > - 1 || sUserAgent.indexOf( " Windows NT 4.0 " ) > - 1 && ( ! isWinME && ! isWin2K && ! isWinXP); }
if
(isMac)
...
{ isMac68K = sUserAgent.indexOf( " Mac_68000 " ) > - 1 || sUserAgent.indexOf( " 68K " ) > - 1 ; ifMacPPC = sUserAgent.indexOf( " Mac_PowerPC " ) > - 1 || sUserAgent.indexOf( " PPC " ) > - 1 ; }
if
(isUnix)
...
{ isSunOS = sUserAgent.indexOf( " SunOS " ) > - 1 ; if (isSunOS) ... { var reSunOS = new RegExp( " SunOS (/d+/./d+(?:/./d+)?) " ); reSunOS.test(sUserAgent); isMinSunOS4 = compareVersion(RegExp[ " $1 " ], " 4.0 " ) >= 0 ; isMinSunOS5 = compareVersion(RegExp[ " $1 " ], " 5.0 " ) >= 0 ; isMinSunOS5_5 = compareVersion(RegExp[ " $1 " ], " 5.5 " ) >= 0 ; } }