Js事件传播流程, 事件阻止

js事件传播流程主要分三个阶段:事件捕获阶段、处于目标阶段、事件冒泡阶段。   

在我们平常用的addEventListener方法中,一般只会用到两个参数,一个是需要绑定的事件,另一个是触发事件后要执行的函数,然而,addEventListener还可以传入第三个参数,第三个参数默认值是false,表示在事件冒泡阶段调用事件处理函数;如果参数为true,则表示在事件捕获阶段调用处理函数。

(1).捕获阶段:事件从根节点流向目标节点,途中流经各个DOM节点,在各个节点上触发捕获事件,直到达到目标节点。

(2).目标(target)阶段:在此阶段中,事件传导到目标节点。浏览器在查找到已经指定给目标事件的监听器后,就会运行该监听器。

 

(3).事件冒泡: 当为多个嵌套的元素设置了相同的事件处理程序,它们将触发事件冒泡机制。在事件冒泡中,最内部的元素将首先触发其事件,然后是栈内的下一个元素触发该事件,以此类推,直到到达最外面的元素。如果把事件处理程序指定给所有的元素,那么这些事件将依次触发。

阻止默认事件

1、在javescript中,return flase可以阻止默认事件,但必须加在onmousedown事件中,down的事儿干完了,再加return flase。

2、在自定义函数addEvent中,return flase会失效,请使用事件对象来进行阻止。ev.preventDefault();//阻止默认事件。

3、在低版本的IE中这些都不好使,需在onmousemove事件中调用obj.setCapture&&obj.setCapture();并且在onmouseup事件中清除obj.releaseCapture&&obj.releaseCapture();

阻止事件冒泡

事件冒泡:

1、当子级的事件触发时,其父级的事件也被触发了。

2、冒泡跟它们在页面中的显示位置无关,只要在html结构中两者是属于父子关系,就存在事件冒泡。

3、阻止事件冒泡必须加在子级的身上。通过事件对象进行阻止。ev.cancelBubble=true;

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  •   JavaScript 与 HTML 之间的交互是通过事件实现的。   事件,就是文档或浏览器窗口中发生的一些特...
    霜天晓阅读 3,581评论 1 11
  • JavaScript 与 HTML 之间的交互是通过事件实现的。事件,就是文档或浏览器窗口中发生的一些特定的交互瞬...
    LemonnYan阅读 703评论 0 4
  • Dom事件 事件是一种异步编程的实现方式,本质上是程序各个组成部分之间的通信。DOM支持大量的事件 (一) Eve...
    woow_wu7阅读 1,822评论 0 1
  • 一、概述 事件流:事件流描述的是从页面中接收事件的顺序。 DOM事件流传播的三个过程: 事件捕获阶段 ——》 处于...
    Fairy_妍阅读 1,511评论 0 2
  • 事件流 Click Me 冒泡型事件:事件按照从最特定的事件目标到最不特定的事件目标的顺序触发。触发的顺序是:di...
    醋留香阅读 865评论 0 1