您的位置:首页 > Web前端 > JavaScript

常用的检测浏览器的javascript代码

2007-09-08 20:32 543 查看
看过Professional.JavaScript.For.Web.Developers这本书的读者应该都觉得这本书讲的很多东西都很实用,很不错。 下面的代码就是书中的一个章节的代码,关于浏览器的检测。


var sUserAgent = navigator.userAgent;


var fAppVersion = parseFloat(navigator.appVersion);






function compareVersions(sVersion1, sVersion2) ...{




var aVersion1 = sVersion1.split(".");


var aVersion2 = sVersion2.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") ...{


fOperaVersion = fAppVersion;




} else ...{


var reOperaVersion = new RegExp("Opera (/d+/./d+)");


reOperaVersion.test(sUserAgent);


fOperaVersion = parseFloat(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 = compareVersions(RegExp["$1"], "2.2") >= 0;


isMinKonq3 = compareVersions(RegExp["$1"], "3.0") >= 0;


isMinKonq3_1 = compareVersions(RegExp["$1"], "3.1") >= 0;


isMinKonq3_2 = compareVersions(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


&& !isKHTML;




var isMinMoz1 = sMinMoz1_4 = isMinMoz1_5 = false;






if (isMoz) ...{


var reMoz = new RegExp("rv:(/d+/./d+(?:/./d+)?)");


reMoz.test(sUserAgent);


isMinMoz1 = compareVersions(RegExp["$1"], "1.0") >= 0;


isMinMoz1_4 = compareVersions(RegExp["$1"], "1.4") >= 0;


isMinMoz1_5 = compareVersions(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;


isMacPPC = 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 = compareVersions(RegExp["$1"], "4.0") >= 0;


isMinSunOS5 = compareVersions(RegExp["$1"], "5.0") >= 0;


isMinSunOS5_5 = compareVersions(RegExp["$1"], "5.5") >= 0;


}


}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: