★JS事件的捕获阶段和冒泡阶段:

  讨论的主要是两个事件模型:IE事件模型与DOM事件模型

    IE内核浏览器的事件模型是冒泡型事件(没有捕获事件过程),事件句柄的触发顺序是从ChildNode到ParentNode。

      <div id="ancestor">

        <button id="child"></button>

      </div> 

      以上的HTML代码在IE内核下,事件是这样传播的:{

        1、Button#child; 
        2、div#ancestor; 
        3、Body; 
        4、Document

      }

    DOM标准的浏览器事件是:捕获事件和冒泡事件。

    捕获事件过程:{

      1、Window 
      2、Document 
      3、Body 
      4、Div#ancestor 
      5、Button#child

    }

    冒泡事件过程:{

      6、Div#ancestor 
      7、Body 
      8、Document 
      9、Window

    } 

    当开发者在一个元素上注册了事件后,这个事件的响应顺序是从window(最顶层)开始一级一级的向下传播,然后到了该元素后事件捕获过程结束,事件开如冒泡,一级一级向父层元素冒泡(请注意第6              步)。当然,开发者可以很轻松的决定DOM标准的浏览器中的事件需要在哪个传播过程触发。

    

    DOM标准的浏览器事件注册方法是通过addEventListener方法注册,而IE内核的浏览器则是通过attachEvent方法注册。

    addEventListener方法带有三个参数,分别是:eventType、handler、useCapture。 eventType不带有on字符串; 
      handler参数是一个事件句柄,这个函数或方法带有一个事件对象参数; 
      useCapture参数决定了事件句柄触发在哪种事件传播阶段,如果useCapture为true则为捕获阶段,反之则为冒泡阶段。

    DOM事件对象提供了stopPropagation方法用于阻止事件流。事件流包括捕获阶段及冒泡阶段的事件流。

    IE内核提供了attachEvent方法为元素注册事件,

      该方法带有两个参数:

      {

        eventType 事件类型,请注意这个参数与addEventListener的eventType的区别,它必须带有on;

        handler 事件句柄 ,请注意attachEvent没有提供事件捕获阶段的参数,IE内核的事件都是发生在冒泡阶段!

      }

    另外还有一些注意事项:

      1、DOM标准的addEventListener方法执行事件的顺序是按照事件注册的顺序执行的。而attachEvent方法则相反–后注册的事件先觖发,先注册的事件后触发。

      2、DOM标准的浏览器文本节点也会冒泡,而IE内核的浏览器文本节点不会冒泡。

      3、DOM标准的浏览器事件对象与IE内核的浏览器事件不同(具体请参阅http://www.quirksmode.org/js/introevents.html)。

      4、DOM标准的浏览器事件卸载方式与IE内核的事件卸载方式不同。

        object.removeEventListener(eventType,handler,useCapture);//DOM标准的事件卸载方式 
        object.detachEvent(eventType,handler);//IE内核的事件卸载方式

        在DOM标准的事件卸载方式中需要注意的是:事件捕获的参数。如果你的事件是注册在捕获阶段,则卸载事件时,必须将其指定为捕获阶段(true),否则无法卸载;如果你的事件注册在注册在冒泡阶                          段,则必须将其指定为冒泡阶段(false),否则同样无法卸载!

 

  

addEventListener()方法的更多相关文章

  1. [转]addEventListener() 方法,事件监听

    转载  白杨-M  http://www.cnblogs.com/baiyangyuanzi/p/6627401.html addEventListener() 方法,事件监听 你可以使用 remov ...

  2. addEventListener() 方法,事件监听

    知识点1:addEventListener() 方法,事件监听,可以使用 removeEventListener() 方法来移除事件的监听. 语法 element.addEventListener(e ...

  3. HTML DOM addEventListener() 方法

    实例 为 <button> 元素添加点击事件. 当用户点击按钮时,在 id="demo" 的 <p> 元素上输出 "Hello World&quo ...

  4. Flex3中addEventListener()方法使用详解

    Flex控件对象.RemoteObject等都有一个共同的方法addEventListener. 方法详细信息: 来源于:flash.events.EventDispatcher类 addEventL ...

  5. addEventListener() 方法,事件监听(去哪儿网用到过)

    addEventListener() 方法,事件监听 你可以使用 removeEventListener() 方法来移除事件的监听. 语法 element.addEventListener(event ...

  6. javascript addEventListener方法

    addEventListener是一个侦听事件并处理相应的函数. DOM方法 addEventListener() 和 removeEventListener()是用来分配和删除事件的函数. 这两个方 ...

  7. 通用addEventListener方法

    假设我们需要为一个<a id="aEle" href="http://www.baidu.com" />添加点击事件处理函数, 一般情况是这样的: ...

  8. JS实现图片无缝滚动特效;附addEventListener()方法、offsetLeft和offsetWidth属性。

    一:html部分 <body> <input id="btn1" type="button" value="向左"> ...

  9. 在JS事件封装时,addEventListener()方法的this问题

    最近在写js的类库,模仿的是jquery的编程风格,当封装到事件监听的时候发现遇到了一个问题,代码是这样的: 上面是封装的一个事件委托的代码,我以为上面的封装跟普通的事件监听一样简单,结果我在调用时发 ...

随机推荐

  1. atnodes命令使用方法

    一条命令可以同时执行多台机器,结果会输出列表. atnodes -L 'grep -c "查询订单列表,userId=bing.wang03" /home/w/www/order- ...

  2. web和app的简单测试区别和工具介绍

    首先说一下我对Web自动化测试与CS自动化测试的认识.从宏观对比都是通过脚本自动化完成功能的验证,区别不大.Web测试更为显著的浏览器兼容性.安全,以及与Web技术相关的表单测试.链接测试等,其实都是 ...

  3. html:class名命名规范

    1 前端开发命名规范 1.1 为什么要制定CSS命名规范 统一的命名规范,便于多人开发维护时代码统一,减少项目沟通和交接的成本,增加代码的语义化. 1.2 CSS命名规则 样式类名全部用小写,首字符必 ...

  4. C语音秋季学习总结

    我对下个学期的期望就是明确自己的目标,能在下学期中学习更多的知识

  5. springmvc转页面

    @RequestMapping("/aa") public String zuan(){ return "redirect:/bb.jsp"; } 如果没有带r ...

  6. 作为一名程序员,在面试中如何展现你Python的coding能力?

    来源商业新知,原文标题:如何在一场面试中展现你对Python的coding能力? 如果你已经通过了招聘人员的电话面试,那么下面正是该展现你代码能力的时候了.无论是练习,作业,还是现场白板面试,这都是你 ...

  7. gitlab 502

    经过一个下午的查找终于发现了错误,原来是在服务器上还开启了一个tomcat服务,占用了8080端口,使GitLab的unicorn服务不能开启. 最后在/etc/gitlab/gitlab.rb 中做 ...

  8. oralce 中union 和union all 的简单使用说明

    union:对两个结果集进行合并操作:不包括重复行:同时进行默认规则的排序: union all:对两个结果集进行合并操作:包括重复行:不排序:

  9. opencv setTo()

    转载至 作者:跬步达千里 opencv的setTo函数是将图像设置为某个值; 例如: 1.有一个Mat src,想将他的值全部设置成0,则可以src.setTo(0) 2.setTo还有更为高级的用法 ...

  10. CORSFilter 跨域资源访问

    CORS 定义 Cross-Origin Resource Sharing(CORS)跨来源资源共享是一份浏览器技术的规范,提供了 Web 服务从不同域传来沙盒脚本的方法,以避开浏览器的同源策略,是 ...