javascript探秘-检测浏览器和操作系统
检测浏览器
//比较0.9与0.9.1
function compareVersion(sVersion1, sVersion2) {
var aVersion1 = sVersion1.split('.');
var aVersion2 = sVersion2.split('.');
if (aVersion1.length > aVersion2.length) {
//少的部分用0加起来
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++) {
var iVal1 = parseInt(aVersion1[i], 10);
var iVal2 = parseInt(aVersion2[i], 10);
if (iVal1 < iVal2) {
return -1;
} else if (iVal1 > iVal2) {
return 1;
}
return 0;
};
}
/**
检测Opera浏览器
*/
var sUserAgent = navigator.userAgent;
var fAppVersion = parseFloat(navigator.appVersion);
//检测Opera
var isOpera = sUserAgent.indexOf('Opera') > -1;
var isMinOpera4 = isMinOpera5 = isMinOpera6 = isMinOpera7 = isMinOpera7_5 = false;
if (isOpera) {
var fOperaVersion;
//检查如果Opera如果没有用伪装,直接赋值
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;
}
/**
检测IE
*/
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;
}
/**
检测Mozilla
在Mozilla的user_agent字符串中,Mozilla的版本位于"rv:"文本后<p/>
且可以包含一个或两个小数点,所以要用到非捕获性分组;
*/
//这里还要区分浏览器是否基于KHTML
var isKHTML=sUserAgent.indexOf("KHTML")>-1||sUserAgent.indexOf("Konqueror")>-1||sUserAgent.indexOf("AppleWebKit")>-1;
/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=compareVersion(RegExp["$1"],"1.0")>=0;
isMinMoz1_4=compareVersion(RegExp["$1"],"1.4")>=0;
isMinMoz1_5=compareVersion(RegExp["$1"],"1.5")>=0;
}
平台/操作系统检测脚本
这个还是对navigator.userAgent进行检索,找到对应特殊字符串。如Windows 2000

浙公网安备 33010602011771号