js添加事件 attachEvent 和addEventListener的用法
2024-08-26 18:26:03
一般我们在JS中添加事件,是这样子的:
obj.onclick = method
这种绑定事件的方式,兼容主流浏览器,但是如果一个元素上添加多次同一个事件呢???
obj.onclick = method1;
obj.onclick = method2;
obj.onclick = method3;
如果这样写,那么只有绑定的事件,这里是method3会被执行,这个时候我们就不能用onclick这样的写法了,主角该登场了,在IE中我们可以使用attachEvent方法
btn1Obj.attachEvent("onclick",method1);
btn1Obj.attachEvent("onclick",method2);
btn1Obj.attachEvent("onclick",method3);
使用格式前面是事件类型,注意的是需要加on,比如onclick,onsubmit,onchange,执行顺序是method3 --> method2 --> method1
可惜这个微软的私人方法,火狐和其他浏览器都不支持,幸运的是他们都支持W3C标准的addEventListener方法
btn1Obj.addEventListener('click',method1,false);
btn1Obj.addEventListener('click',method2,false);
btn1Obj.addEventListener('click',method3,false);
执行顺序是method1 --> method2 --> method3,
作为前端开发工程师,最悲剧的莫过于浏览器的兼容问题,上面有两种添加事件的方法,为了同一添加事件的方法,我们不得不再重新写一个通用的添加事件函数,幸亏有前人帮我们做了这件事
<script>
function addEvent(elem,evType,fn,useCapture){
if (elem.addEventListener) {
elem.addEventListener(evType,fn,useCapture);//DOM 2.0
return true;
}else if(elem.attachEvent){
var r = elem.attachEvent('on'+evType,fn); //IE5+
return r;
}else{
elem['on'+evType] = fn; //DOM 0
}
}
</script>
转载:http://www.oschina.net/question/54100_25614
最新文章
- float---浮动带来的影响与清除浮动带来的影响方法----在路上(20)
- Day5-python基础之函数(二)
- html5、canvas绘制本地时钟
- Replication的犄角旮旯(九)-- sp_setsubscriptionxactseqno,赋予订阅活力的工具
- NFS和mount常用参数详解
- UFS
- Linux下/proc目录简介
- Data URL
- [转]重叠IO
- Android开发之R文件丢失
- CS=0xFFFF IP=0x0000与CS=F000 IP=FFF0
- HTML meta标签总结与属性使用介绍
- VS2008 ctrl+shift+F热键冲突
- 201521123036 《Java程序设计》第8周学习总结
- VS2015 代码片段整理
- Swift - 给图片和按钮添加阴影边框
- Triangles 正多边形分割锐角三角形
- Spring学习(十六)----- Spring AOP实例(Pointcut(切点),Advisor)
- Avito Cool Challenge 2018 自闭记
- imperva 获取gti文档