attachEvent和addEventListener区别

本文详细介绍了在不同浏览器环境下实现事件绑定的多种方法,包括W3C标准的addEventListener、IE特有的attachEvent以及传统的属性赋值法,并探讨了这些方法在事件执行顺序上的差异。

 

一般来说,可以直接封装成这种形式:

var addEvent = function(element,type,handler){ 
            if(element.addEventListener){  //DOM2级
                element.addEventListener(type,handler,false); //false为冒泡,true为捕获
            }else if(element.attachEvent){  //IE
                element.attachEvent("on"+type,function(){  //默认皆为冒泡
                    handler.call(element);
                });
            }else{ 
                element["on"+type] = handler; //DOM0级
            }
        };

addEventListener的使用方式:主要是DOM2级

target.addEventListener(type, listener, useCapture);

target就是要注册事件的对象

type就是事件类型  比如“click"

listener就是监听的函数

useCapture就是是否使用捕获方式,false为冒泡,true为捕获

attachEvent使用方式:主要是IE中使用

target.attachEvent(type, listener);

type是事件类型,注意是这种形式:”onclick"

listener监听的函数

默认使用冒泡的方式

 

相应的,解除事件的方法:

removeEventListener(event,function,useCapture);

detachEvent(event,function);

 

补充:

1、addEventListener 
适用w3c标准方法addEventListener绑定事件,如下,事件的执行顺序和绑定顺序一致,执行顺序为method1->method2->method3

 
  1. //element.addEventListener(type,listener,useCapture);
  2. btn1Obj.addEventListener("click",method1,false);
  3. btn1Obj.addEventListener("click",method2,false);
  4. btn1Obj.addEventListener("click",method3,false);

2、attachEvent 
在IE8及以下版本中,不支持addEventListener,只能用attachEvent绑定事件,执行顺序是 method3->method2->method1

 
  1. //object.attachEvent(event,function);
  2. btn1Obj.attachEvent("onclick",method1);
  3. btn1Obj.attachEvent("onclick",method2);
  4. btn1Obj.attachEvent("onclick",method3);

3、属性赋值法绑定事件 
适用该方法会使后绑定的方法覆盖前面的方法,要想一次性绑定多个(一次性执行多个操作,可以再一个事件中调用多个方法)

 
  1. obj.onclick=method1;
  2. obj.onclick=method2;
  3. obj.onclick=method3;

一次性绑定多个:

 
obj.οnclick=function (){
method1();
method2();
method3();
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值