DOM: EVENT FLOW
捕获阶段(capture phase)
捕获阶段的定义如下(w3c):The event object propagate through the target's ancestors from the defaultView to the target's parent.
文章开头的例子里面,捕获阶段的click事件会依次在document、body、div上触发:

document 1
v
body 2
v
div 3
v
button

addEventListener的第三个参数设置为true:// 第三个参数设置是否为捕获阶段,默认为false
element.addEventListener('click', function() {}, true)
目标阶段(target phase)
目标阶段的定义是(w3c):The event object arrive at the event object's event target.事件对象到达事件目标。
例子里面,就是事件在button上触发的。addEventListener可以监听目标阶段的事件:
element.addEventListener('click', function() {})
如果事件是不可冒泡的,那整个事件流动会到此为止,不会发生下面的冒泡阶段。
冒泡阶段(bubble phase)
冒泡阶段的定义(w3c):The event object propagates through the target's ancestors in reverse order, starting with the target's parent and ending with the defaultView.
事件对象会在事件目标的祖先元素里反向传播,由开始的父元素到最后的defaultView(document)。
冒泡阶段发生在最后,在这阶段里事件会从子(分支)到父(主干)逆向传播,看起来像是一个水里的泡泡往上冒。
例子里面,冒泡阶段的click事件会依次在div、body、document上触发:

document 3
^
body 2
^
div 1
^
button

"bubbles"
Event下的bubbles属性标明该事件是否为可冒泡的。一旦该值为false,则说明 evnet不可冒泡,那其流动也会在第二阶段“目标阶段”后就终止。
作者:butterandfly
链接:https://www.jianshu.com/p/382895a4027d
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处
DOM: EVENT FLOW的更多相关文章
- [DOM Event Learning] Section 4 事件分发和DOM事件流
		[DOM Event Learning] Section 4 事件分发和DOM事件流 事件分发机制: event dispatch mechanism. 事件流(event flow)描述了事件对象在 ... 
- Javascript——浅谈 Event Flow
		1.Javascript Events : Event Bubbling(事件冒泡) 如果事件从最特定的元素开始,则事件流中的一个阶段称为事件冒泡(DOM中可能最深的节点)然后向上流向最不特定的节点( ... 
- 关于 javascript event flow 的一个bug
		[1]描述了firefox,safari 有一个bug和DOM 3 规范不一致:在event.currentTarget等于event.target的时候(即event flow处于target ph ... 
- event flow
		JS之event flow DOM事件流 1.定义: DOM(文档对象模型)结构是一个树型结构,当一个HTML元素产生一个事件时,该事件会在元素节点与根结点之间的路径传播,路径所经过的结点都会收到该事 ... 
- JavaScript之HTML DOM Event
		当鼠标在button上点击时,会在button上触发一个click事件.但是button是div的一个子元素, 在button里点击相当于在div里点击,是否click事件也会触发在div上?如果cl ... 
- [DOM Event Learning] Section 3 jQuery事件处理基础 on(), off()和one()方法使用
		[DOM Event Learning] Section 3 jQuery事件处理基础 on(),off()和one()方法使用 jQuery提供了简单的方法来向选择器(对应页面上的元素)绑定事件 ... 
- [DOM Event Learning] Section 2 概念梳理 什么是事件 DOM Event
		[DOM Event Learning] Section 2 概念梳理 什么是事件 DOM Event 事件 事件(Event)是用来通知代码,一些有趣的事情发生了. 每一个Event都会被一个E ... 
- [DOM Event Learning] Section 1 DOM Event 处理器绑定的几种方法
		[DOM Event Learning] Section 1 DOM Event处理器绑定的几种方法 网页中经常需要处理各种事件,通常的做法是绑定listener对事件进行监听,当事件发生后进行一 ... 
- HTML DOM Event对象
		我们通常把HTML DOM Event对象叫做Event事件 事件驱动模型 事件源:(触发事件的元素)事件源对象是指event对象 其封装了与事件相关的详细信息. 当事件发生时,只能在事件函数内部访问 ... 
随机推荐
- Mac打开应用提示已损坏的解决办法
			相信很多升级了最新Mac系统的用户在打开一些应用的时候都会出现“应用XX已损坏”的系统提示,安装这些应用的时候总是提示“已损坏,移至废纸篓”这类信息,根本无法打开应用. Mac打开应用提示已损坏的解决 ... 
- 使用stringstream格式化字符串
			stringstream所在头文件为<sstream> 一般有如下常用功能: 1.安全格式化字符串 stringstream常用来安全的格式化若干个字符串,数值到一个缓冲区, 而不用担心溢 ... 
- 我的Linux病毒追踪记录
			第一次自己一个人全权负责做游戏服务器,对于Linux安全并不太懂,所以就在昨天,服务器遭到了攻击,刚开始,只是发现服务器的带宽占满了,以为是带宽不够用,可是想想,弱联网游戏对带宽占用也不高啊而且带宽加 ... 
- 最新zencart支付宝插件(支持1.5)
			最新zencart支付宝插件(支持1.5) 最新zencart支付宝插件(支持1.5) 支付宝接口的兼容性真不错,时至今日还能用,想利用zencart来做国内时长还真是方便多了,朋友们可以试试. ... 
- Outputting Strings in the Console
			Outputting Strings in the Console #include <windows.h> class Console {public: enum fore_color ... 
- 文本文件显示   删除文本文件前n个字符
			#include<iostream>#include<string.h>using namespace std;void displayContent(const char * ... 
- 运输层协议--TCP及UDP协议
			TCP及UDP协议 按照网络的五层分级结构来看,TCP及UDP位于运输层,故TCP及UDP是运输层协议.TCP协议--传输控制协议UDP协议--用户数据报协议 多路复用及多路分解 图多路复用及多路分解 ... 
- 带宽、流量、CDN
			1.啥叫带宽? 1.1 带宽的概念: 在网络中的带宽往往是指一个固定的时间内,能通过的最大位数据,即数据传输率.带宽是一个计量单位,用来计量单位时间内传输的数据量的多少. 1.2 计量单位: 这个数据 ... 
- quartz (一) 基于 Quartz 开发企业级任务调度应用
			本文转自:http://www.ibm.com/developerworks/cn/opensource/os-cn-quartz/ Quartz 基本概念及原理 Quartz Scheduler 开 ... 
- linux内核动态打印
			参考:https://www.cnblogs.com/pengdonglin137/p/4622460.html https://linux.cn/article-3682-1.html?pr 如何打 ... 
