事件流
一个完整的事件流实际包含了3个阶段:事件捕获阶段>事件目标阶段>事件冒泡阶段。
(1)事件捕获阶段
事件捕获阶段的主要表现是不具体的节点先接收事件,然后逐级向下传播,最具体的节点最后接收到事件。根据图5-4中的指示就是Window > Document > html >body > table > tbody > tr > td。
(2)事件目标阶段
事件目标阶段表示事件刚好传播到用户产生行为的元素上,可能是事件捕获的最后一个阶段,也可能是事件冒泡的第一个阶段。
(3)事件冒泡阶段
事件冒泡阶段的主要表现是最具体的元素先接收事件,然后逐级向上传播,不具体的节点最后接收事件,根据图5-4中的指示就是td > tr > tbody > table > body >html > Document >Window。
捕获型事件流和冒泡型事件流
使用addEventListener()函数绑定的事件在默认情况下,即第三个参数默认为false时,按照冒泡型事件流处理。
使用addEventListener()函数同样可以很方便地创造出捕获型事件流,只需要将第三个参数设置为true即可。
完整的事件流是按照事件捕获阶段>事件目标阶段>事件冒泡阶段依次进行的。如果有元素绑定了捕获类型事件,则会优先于冒泡类型事件而先执行。