addEventListener 方法的第三个参数是一个布尔值,通常被称为 options。它表示该事件是在捕获阶段还是在冒泡阶段被触发。
默认情况下,该参数的值是 false,表示在冒泡阶段触发事件。如果该参数的值为 true,表示在捕获阶段触发事件。
事件捕获和事件冒泡是 DOM 事件传播的两个阶段。事件捕获从最外层的元素开始,逐级向内,直到到达事件的目标元素。事件冒泡则是从事件的目标元素开始,逐级向外,直到到达最外层的元素。
在事件传播过程中,如果一个元素既定义了事件捕获阶段的处理程序,又定义了事件冒泡阶段的处理程序,那么它们将按照以下顺序依次执行:
- 事件捕获阶段的处理程序
- 事件的目标元素上定义的处理程序
- 事件冒泡阶段的处理程序
通过将 options 参数设置为 true,可以在事件捕获阶段执行事件处理程序。这样做可以在事件到达目标元素之前捕获并处理事件,从而实现更精细的事件控制。
需要注意的是,并非所有的事件都支持事件捕获阶段,比如 focus 和 blur 事件就不支持。此外,事件捕获和事件冒泡的默认顺序是不可逆的,可以通过设置 options 参数为 true 来改变它们的顺序,但是不能完全颠倒它们的顺序。