由于IE浏览器与其他普通浏览器的不同,所以有了一些不兼容的问题,下面是一些常见的兼容问题及解决兼容问题的写法:
一般的解决兼容都是封装成一个函数:
获取非行内样式时:
1 //普通浏览器 2 getComputedStyle(ele,false)[attr]; 3 //IE浏览器 4 ele.currentStyle[attr]; 5 //兼容: 6 function getStyle(ele,attr){ 7 if(ele.currentStyle){ 8 return ele.currentStyle[attr]; 9 }else{ 10 return getComputedStyle(ele,false)[attr]; 11 } 12 }
获取事件对象时:
1 //普通浏览器 2 //事件处理函数的第一个参数; 3 //IE浏览器 4 //通过window找event属性; 5 //兼容: 6 ele.onclick = function(eve){ 7 var e = eve || window.event; 8 }
获取事件对象目标时:
1 //普通浏览器: 2 //e.target; 3 //IE浏览器(火狐浏览器): 4 //e.srcElement; 5 //兼容: 6 var e = eve || window.event; 7 var target = e.target || e.srcElement;
阻止事件冒泡时:
1 //普通浏览器: 2 //e.stopPropagation; 3 //IE浏览器: 4 //e.cancelBubble=true; 5 //兼容: 6 function stopBubble(e){ 7 if(e.stopPropagation){ 8 e.stoPropagation(); 9 }else{ 10 e.cancelBubble=true; 11 } 12 }
阻止默认事件时:
1 //普通浏览器: 2 //e.preventDefault; 3 //IE浏览器: 4 //e.returnValue=false; 5 //兼容: 6 function stopDefault(){ 7 if(e.preventDefault) { 8 e.preventDefault(); 9 } else{ 10 e.returnValue=false; 11 } 12 }
监听式绑定事件时:
1 //普通浏览器: 2 //ele.addEventListener; 3 //IE浏览器: 4 //ele.attachEvent; 5 //兼容: 6 function stopDefault(ele,type,cb){ 7 if(ele.addEventListener;) { 8 ele.addEventListener(type,cb,false); 9 } else{ 10 ele.attachEvent("on"+type,cb); 11 } 12 }
删除监听式绑定事件时:
1 //普通浏览器: 2 //ele.removeEventListener; 3 //IE浏览器: 4 //ele.detachEvent; 5 //兼容: 6 function stopDefault(ele,type,cb){ 7 if(ele.removeEventListener;) { 8 ele.removeEventListener(type,cb,false); 9 } else{ 10 ele.detachEvent("on"+type,cb); 11 } 12 }