摘要:浏览器兼容是Web开发人员挥之不去的阴霾。

此文主要参考至:heartbeaty

1. 单独判断是否IE浏览器:

1
2
3
4
5
6
7
8
9
10
11
//判断是否是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";
}
}

2. 判断是否是IE浏览器及其版本,包括Edge浏览器 :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
//判断是否是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
}
}

3. 判断浏览器类型及其IE版本 :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
//判断浏览器类型及其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浏览器经典方法 :

1
2
3
var ie = !-[1,];   

alert(ie);

分析:在非标准浏览器(IE9-)里面,不会自动忽略数组最后一个逗号,而是在后面补齐undefined,所以在IE9以下不包括IE9中[1,]会被当做[1,undefined],此时在数组前面加-号返回NaN,取非!操作返回true