牛客网有这么一道题
![](https://img.haomeiwen.com/i5426662/a8b61749a86a4b99.png)
首先我知道 preventDefault()是阻止原始事件的触发,不会阻止事件的传播。
能阻止事件传播的是 stopPropagation()
但是,我疑惑的是:
为啥捕获阶段没有触发父元素的click事件先打印出1?
查了一下,原因是:
处理器 on<event> 属性或使用 HTML 属性或者使用 addEventListener(event, handler) 添加的处理器,不知道捕获,它们只知道第 2 和第 3 阶段。
要在捕获阶段捕获事件,我们需要将 addEventListener 的第三个参数设置为 true。
最后一个参数是可选的,有两个可能的值:
如果为 false(默认值),则在冒泡阶段设置处理器。
如果为 true,则在捕获阶段设置处理器。
网友评论