通过javascript判断五大浏览器及其版本
2018-04-15 本文已影响39人
b08d45cdf2ac
Opear
浏览器兼容是Web开发人员挥之不去的阴霾,特别是在以前的IE浏览器、怪异模式、CSS Hack、BFC,伤透脑筋,随着W3C标准的日益规范化,各大浏览器的差异在逐渐缩小,不过还是各有千秋,所以在开发中不免使用javascript来判断浏览器类型或者版本,我们主要通过浏览器navigator
对象返回的userAgent
字符串来进行判断。
一.单独判断是否IE浏览器:
//判断是否是IE浏览器
function isIE() {
var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串
var isOpera = userAgent.indexOf("Opera") > -1; //判断是否Opera浏览器
var isIE = userAgent.indexOf("compatible") > -1 && userAgent.indexOf("MSIE") > -1 && !isOpera; //判断是否IE浏览器
if(isIE) {
return "1";
} else {
return "-1";
}
}
二.判断是否是IE浏览器及其版本,包括Edge浏览器 :
//判断是否是IE浏览器及其版本,包括Edge浏览器
function IEVersion() {
var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串
var isOpera = userAgent.indexOf("Opera") > -1; //判断是否Opera浏览器
var isIE = userAgent.indexOf("compatible") > -1 && userAgent.indexOf("MSIE") > -1 && !isOpera; //判断是否IE浏览器
var isEdge = userAgent.indexOf("Windows NT 6.1; Trident/7.0;") > -1 && !isIE; //判断是否IE的Edge浏览器
if(isIE) {
var reIE = new RegExp("MSIE (\\d+\\.\\d+);");
reIE.test(userAgent);
var fIEVersion = parseFloat(RegExp["$1"]);
if(fIEVersion == 7) {
return "IE7";
} else if(fIEVersion == 8) {
return "IE8";
} else if(fIEVersion == 9) {
return "IE9";
} else if(fIEVersion == 10) {
return "IE10";
} else if(fIEVersion == 11) {
return "IE11";
} else {
return "0"
} //IE版本过低
} else if(isEdge) {
return "Edge";
} else {
return "-1"; //非IE
}
}
三.判断浏览器类型及其IE版本 :
//判断浏览器类型及其IE版本
function BrowserType() {
var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串
var isOpera = userAgent.indexOf("Opera") > -1; //判断是否Opera浏览器
var isIE = userAgent.indexOf("compatible") > -1 && userAgent.indexOf("MSIE") > -1 && !isOpera; //判断是否IE浏览器
var isEdge = userAgent.indexOf("Windows NT 6.1; Trident/7.0;") > -1 && !isIE; //判断是否IE的Edge浏览器
var isFF = userAgent.indexOf("Firefox") > -1; //判断是否Firefox浏览器
var isSafari = userAgent.indexOf("Safari") > -1 && userAgent.indexOf("Chrome") == -1; //判断是否Safari浏览器
var isChrome = userAgent.indexOf("Chrome") > -1 && userAgent.indexOf("Safari") > -1; //判断Chrome浏览器
if(isIE) {
var reIE = new RegExp("MSIE (\\d+\\.\\d+);");
reIE.test(userAgent);
var fIEVersion = parseFloat(RegExp["$1"]);
if(fIEVersion == 7) {
return "IE7";
} else if(fIEVersion == 8) {
return "IE8";
} else if(fIEVersion == 9) {
return "IE9";
} else if(fIEVersion == 10) {
return "IE10";
} else if(fIEVersion == 11) {
return "IE11";
} else {
return "0"
} //IE版本过低
} //isIE end
if(isFF) {
return "FF";
}
if(isOpera) {
return "Opera";
}
if(isSafari) {
return "Safari";
}
if(isChrome) {
return "Chrome";
}
if(isEdge) {
return "Edge";
}
}
四.IE9以前判断IE浏览器经典方法 :
var ie = !-[1,];
alert(ie);
分析:在非标准浏览器(IE9-)里面,不会自动忽略数组最后一个逗号,而是在后面补齐undefined,所以在IE9以下不包括IE9中[1,]会被当做[1,undefined],此时在数组前面加-号返回NaN,取非!操作返回true。