js中一些兼容问题及写法

由于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 }

猜你喜欢

转载自www.cnblogs.com/ssmin/p/12002190.html