一般我们在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

最新文章

  1. float---浮动带来的影响与清除浮动带来的影响方法----在路上(20)
  2. Day5-python基础之函数(二)
  3. html5、canvas绘制本地时钟
  4. Replication的犄角旮旯(九)-- sp_setsubscriptionxactseqno,赋予订阅活力的工具
  5. NFS和mount常用参数详解
  6. UFS
  7. Linux下/proc目录简介
  8. Data URL
  9. [转]重叠IO
  10. Android开发之R文件丢失
  11. CS=0xFFFF IP=0x0000与CS=F000 IP=FFF0
  12. HTML meta标签总结与属性使用介绍
  13. VS2008 ctrl+shift+F热键冲突
  14. 201521123036 《Java程序设计》第8周学习总结
  15. VS2015 代码片段整理
  16. Swift - 给图片和按钮添加阴影边框
  17. Triangles 正多边形分割锐角三角形
  18. Spring学习(十六)----- Spring AOP实例(Pointcut(切点),Advisor)
  19. Avito Cool Challenge 2018 自闭记
  20. imperva 获取gti文档

热门文章

  1. 内核通信之Netlink源码分析-基础架构
  2. Web爬虫的C#请求发送
  3. 详解Spark sql用户自定义函数:UDF与UDAF
  4. Spark踩坑记:Spark Streaming+kafka应用及调优
  5. webuploader 多图片上传
  6. php微信支付回调验证
  7. 简明python教程十一----更多Python的内容
  8. (转)C++内存分配方式详解——堆、栈、自由存储区、全局/静态存储区和常量存储区
  9. python 之操作redis数据库(非关系型数据库,k-v)
  10. 过滤adb logcat 日志