zoukankan      html  css  js  c++  java
  • Javascript 的addEventListener()及attachEvent()区别分析

    Mozilla中: 

    addEventListener的使用方式: 

    target.addEventListener(type, listener, useCapture); 

    target: 文档节点、document、window 或 XMLHttpRequest。 
    type: 字符串,事件名称,不含“on”,比如“click”、“mouseover”、“keydown”等。 
    listener :实现了 EventListener 接口或者是 JavaScript 中的函数。 
    useCapture :是否使用捕捉,一般用 false 。例如:document.getElementById("testText").addEventListener("keydown", function (event) { alert(event.keyCode); }, false); 

    IE中: 

    target.attachEvent(type, listener); 
    target: 文档节点、document、window 或 XMLHttpRequest。 
    type: 字符串,事件名称,含“on”,比如“onclick”、“onmouseover”、“onkeydown”等。 
    listener :实现了 EventListener 接口或者是 JavaScript 中的函数。 例如:document.getElementById("txt").attachEvent("onclick",function(event){alert(event.keyCode);}); 

    W3C 及 IE 同时支持移除指定的事件, 用途是移除设定的事件, 格式分别如下: 

    W3C格式: 

    removeEventListener(event,function,capture/bubble); 

    Windows IE的格式如下: 

    detachEvent(event,function); 


    target.addEventListener(type, listener, useCapture); 
    target 文档节点、document、window 或 XMLHttpRequest。 
    type 字符串,事件名称,不含“on”,比如“click”、“mouseover”、“keydown”等。 
    listener 实现了 EventListener 接口或者是 JavaScript 中的函数。 
    useCapture 是否使用捕捉,看了后面的事件流一节后就明白了,一般用 false 
    事件触发时,会将一个 Event 对象传递给事件处理程序,比如: 
    document.getElementById("testText").addEventListener("keydown", function (event) { alert(event.keyCode); }, false); 
    适应的浏览器版本不同,同时在使用的过程中要注意 
    attachEvent方法 按钮onclick IE中使用 
    addEventListener方法 按钮click fox中使用 
    两者使用的原理:可对执行的优先级不一样,下面实例讲解如下: 
    attachEvent方法,为某一事件附加其它的处理事件。(不支持Mozilla系列) 
    addEventListener方法 用于 Mozilla系列 
    举例: document.getElementById("btn").onclick = method1; 
    document.getElementById("btn").onclick = method2; 
    document.getElementById("btn").onclick = method3;如果这样写,那么将会只有medhot3被执行 
    写成这样: 
    var btn1Obj = document.getElementById("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.getElementById("btn1"); 
    //element.addEventListener(type,listener,useCapture); 
    btn1Obj.addEventListener("click",method1,false); 
    btn1Obj.addEventListener("click",method2,false); 
    btn1Obj.addEventListener("click",method3,false);执行顺序为method1->method2->method3 

    实例:(要注意的是div必须放到js前面才行) 




    if (typeof window.addEventListener != “undefined”) {
    window.addEventListener(”load”,rollover,false);
    } else {
    window.attachEvent(”onload”,rollover)
    }

    上述的 typeof window.addEventListener != “undefined” 程序代码可以判断使用者的浏览器是否支持AddEventListener这个事件模型, 如果不支持就使用attachEvent.


    参考:http://www.jb51.net/article/18220.htm

  • 相关阅读:
    std thread
    windows更新包发布地址
    How to set up logging level for Spark application in IntelliJ IDEA?
    spark 错误 How to set heap size in spark within the Eclipse environment?
    hadoop 常用命令
    windows 安装hadoop 3.2.1
    windows JAVA_HOME 路径有空格,执行软连接
    day01MyBatisPlus条件构造器(04)
    day01MyBatisPlus的CRUD 接口(03)
    day01MyBatisPlus入门(02)
  • 原文地址:https://www.cnblogs.com/saysmy/p/5594897.html
Copyright © 2011-2022 走看看