不少小伙伴经常要处理IE/Edge浏览器的兼容(主要是外包,还是接事业单位的项目的伙伴)。样式的处理可以使用css hack,但部分无法使用hack的,只能操作脚本去控制样式的变化/脚本兼容处理。但不能需要用的时候再去判断是否ie浏览器,然后再写脚本处理,这里太麻烦了。下面介绍一个函数,一次直接判断,处理时直接调用即可。
function ie(param){
var ua = navigator.userAgent,
isIE = ua.indexOf("compatible") > -1 && ua.indexOf("MSIE") > -1, //ie<11
isEdge = ua.indexOf("Edge") > -1 && !isIE,
isIE11 = ua.indexOf('Trident') > -1 && ua.indexOf("rv:11.0") > -1;
/*
* 判断是否IE11以下的浏览器,IE11返回的userAgent不同于11版本以下的
* 直接执行相对应的回调
*/
if(isIE) {
var regIE = new RegExp("MSIE (\\d+\\.\\d+);");
regIE.test(ua)
var ver = parseFloat(RegExp["$1"]);
switch (ver) {
case ver<7:
break;
default:
param["ie"+ver]?param["ie"+ver]():"";
break;
}
} else if(isEdge) {
param.edge? param.edge():"";
} else if(isIE11) {
param.ie11? param.ie11():"";
}
}
注意:在win10上,IE5会返回IE7的userAgent,所以会按照IE7的回调去处理。
执行结果:
ie({
"ie6":function (){
console.log("这是ie7浏览器");
},
"ie7":function (){
console.log("这是ie7浏览器");
},
"ie8":function (){
console.log("这是ie8浏览器");
},
"ie11":function (){
console.log("这是ie11浏览器");
},
"edge":function (){
console.log("这是edge浏览器");
},
"chrome":function (){
console.log("这是chrome浏览器");
}
});
输出结果:
谢谢各位支持,喜欢的朋友可以fork一下哦!