摘要:浏览器兼容是Web开发人员挥之不去的阴霾。
此文主要参考至:heartbeaty
1. 单独判断是否IE浏览器:
1 2 3 4 5 6 7 8 9 10 11
| function isIE() { var userAgent = navigator.userAgent; var isOpera = userAgent.indexOf("Opera") > -1; var isIE = userAgent.indexOf("compatible") > -1 && userAgent.indexOf("MSIE") > -1 && !isOpera; 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
| function IEVersion() { var userAgent = navigator.userAgent; var isOpera = userAgent.indexOf("Opera") > -1; var isIE = userAgent.indexOf("compatible") > -1 && userAgent.indexOf("MSIE") > -1 && !isOpera; var isEdge = userAgent.indexOf("Windows NT 6.1; Trident/7.0;") > -1 && !isIE; 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" } } else if(isEdge) { return "Edge"; } else { return "-1"; } }
|
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
| function BrowserType() { var userAgent = navigator.userAgent; var isOpera = userAgent.indexOf("Opera") > -1; var isIE = userAgent.indexOf("compatible") > -1 && userAgent.indexOf("MSIE") > -1 && !isOpera; var isEdge = userAgent.indexOf("Windows NT 6.1; Trident/7.0;") > -1 && !isIE; var isFF = userAgent.indexOf("Firefox") > -1; var isSafari = userAgent.indexOf("Safari") > -1 && userAgent.indexOf("Chrome") == -1; var isChrome = userAgent.indexOf("Chrome") > -1 && userAgent.indexOf("Safari") > -1;
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" } }
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
。