首先还是IE浏览器的检测,一般我们在写代码的时候,出现的兼容性bug几乎都来自IE。从IE10以后,IE还算有点良心,支持了大部门的CSS3及H5的新特性。那么在IE10之前呢,就要才去别的手段来代替CSS3的某些效果,这样呢就要检测浏览器类型了,特事特办嘛。
检测IE10之前的浏览器
window.navigator.userAgent.indexOf("MSIE")>=1
返回true代表是IE浏览器,返回false就说明不是IE
e10及以上不支持ie浏览器的判断了,因为ie11已经不支持document.all了,下面是支持ie11的版本的,当然ie6-8也是支持的
if(!!window.ActiveXObject || "ActiveXObject" in window) { alert("这是IE浏览器") } else { alert("这不是IE浏览器") }
如果区分浏览器,并考虑IE5.5,6,7,8
function myBrowser(){ 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 isFF = userAgent.indexOf("Firefox") > -1; //判断是否Firefox浏览器 var isSafari = userAgent.indexOf("Safari") > -1; //判断是否Safari浏览器 if (isIE) { var IE5 = IE55 = IE6 = IE7 = IE8 = false; var reIE = new RegExp("MSIE (\d+\.\d+);"); reIE.test(userAgent); var fIEVersion = parseFloat(RegExp["$1"]); IE55 = fIEVersion == 5.5; IE6 = fIEVersion == 6.0; IE7 = fIEVersion == 7.0; IE8 = fIEVersion == 8.0; if (IE55) { return "IE55"; } if (IE6) { return "IE6"; } if (IE7) { return "IE7"; } if (IE8) { return "IE8"; } }//isIE end if (isFF) { return "FF"; } if (isOpera) { return "Opera"; } }//myBrowser() end //以下是调用上面的函数 if (myBrowser() == "FF") { alert("我是 Firefox"); } if (myBrowser() == "Opera") { alert("我是 Opera"); } if (myBrowser() == "Safari") { alert("我是 Safari"); } if (myBrowser() == "IE55") { alert("我是 IE5.5"); } if (myBrowser() == "IE6") { alert("我是 IE6"); } if (myBrowser() == "IE7") { alert("我是 IE7"); } if (myBrowser() == "IE8") { alert("我是 IE8"); }
当然如果简单一点的判断IE浏览器
var ie = !-[1,]; alert(ie);
原理是利用了IE与标准浏览器在处理数组的toString方法的差异做成的。对于标准游览器,如果数组里面最后一个字符为逗号,JS引擎会自动剔除它。