标签:move 自己 委托 element dde 事件冒泡 top 需要 rop
在使用js的过程中,往往会发现关于IE浏览器的兼容问题,当然微软现在自己也打算抛弃IE,推出了edge浏览器,对于前端来说是个好消息.
但IE的用户占比仍然不容小觑,因此这里整理下常见的几个兼容问题附上解决方案,以免不时之需.
1.非行内样式的获取
IE浏览器:element.currentstyle+attr
正常浏览器(chrome,FF):getComputedStyle(element,false)+attr
这两类浏览器以下都简称为IE和正常
接下来封装一个函数,方便调用(兼容所有浏览器)
function getStyle(ele,attr){ var a = ""; if(ele.currentStyle){ //IE a = ele.currentStyle[attr]; }else{ a = getComputedStyle(ele,false)[attr]; //正常 }
2.获取事件对象
IE : window.event
正常 : 给事件传参
obox.onclick=function(eve){ var e=eve||window.event; console.log(e) }
3.阻止事件冒泡
function stopBubble(e){ if(e.stopPropagation){ e.stopPropagation(); //正常 }else{ e.cancelBubble = true; //IE } }
4.事件委托
事件委托:将多个相同元素的相同事件,添加给页面上现存的共同的父元素,利用事件冒泡,配合事件源,找到真正点击的元素
function tar(t){ var t = e.target || e.srcElement;}
5.添加事件绑定方式
事件绑定方式有两种:赋值式和监听式
function addEvent(ele,type,cb){ if(ele.addEventListener){ ele.addEventListener(type,cb) //监听式:正常 }else if(ele.attachEvent){ ele.attachEvent("on"+type,cb) //监听式:IE }else{ ele["on"+type] = cb; //赋值式 } }
6.删除事件绑定方式
同样的,事件绑定方式的删除对应
function removeEvent(ele,type,cb){ if(ele.removeEventListener){ ele.removeEventListener(type,cb) //监听式:正常的删除 }else if(ele.detachEvent){ ele.detachEvent("on"+type,cb) //监听式:IE的删除 }else{ ele["on"+type] = null; //赋值式的删除 } }
7.键盘事件的键值获取
IE : event.which
正常 : event.keycode
function code(eve){ var e=eve||window.event; //先获取事件 var code=e.keyCode||e.which; //再获取键值 }
8.阻止默认事件
function stopDefault(e){ if(e.preventDefault){ e.preventDefault() //正常 }else{ e.returnValue = false; //IE } }
碰到新的兼容问题会继续更新,欢迎讨论
标签:move 自己 委托 element dde 事件冒泡 top 需要 rop
原文地址:https://www.cnblogs.com/mutuo/p/11487801.html