• attachEvent和addEventListener区别


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

    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);

    那它们有什么不同呢?

    举个例子:

    document.getElementByIdx("btn").onclick = method1;
    document.getElementByIdx("btn").onclick = method2;
    document.getElementByIdx("btn").onclick = method3;
    // 如果这样写,那么将会只有medhot3被执行
    
    // 写成这样:
    var btn1Obj = document.getElementByIdx("btn1"); //object.attachEvent(event,function);
    btn1Obj.attachEvent("onclick",method1);
    btn1Obj.attachEvent("onclick",method2);
    btn1Obj.attachEvent("onclick",method3);
    // 执行顺序为 method3->method2->method1
    
    // 如果是Mozilla系列,并不支持该方法,需要用到addEventListener var btn1Obj = document.getElementByIdx("btn1");
    //element.addEventListener(type,listener,useCapture);
    btn1Obj.addEventListener("click",method1,false);
    btn1Obj.addEventListener("click",method2,false);
    btn1Obj.addEventListener("click",method3,false);
    // 执行顺序为 method1->method2->method3
  • 相关阅读:
    数据中台的“自动化数据治理”时代已来
    如何利用缓存机制实现JAVA类反射性能提升30倍
    快速入门开发实现订单类图片识别结果抽象解析
    Nginx专题(1):Nginx之反向代理及配置
    Github 上热门的 Spring Boot 项目实战推荐
    设计模式之命令模式(二)
    设计模式之命令模式(一)
    设计模式之单例模式(二)
    设计模式之单例模式(一)
    好的学习带给我什么
  • 原文地址:https://www.cnblogs.com/imwtr/p/4411064.html
Copyright © 2020-2023  润新知