能者 发表于 2023-9-14 13:00:02

JavaScript中的事件冒泡和事件捕获有什么区别

在JavaScript中,事件冒泡和事件捕获是两种不同的事件传播方式。

事件冒泡(Event Bubbling)是指当一个具体元素上的事件被触发时,该事件会从该元素开始向父级元素依次传播,直到传播到文档根节点为止。换句话说,事件会先触发最内层的元素,然后逐级向外传播至父级元素。

事件捕获(Event Capturing)是指当一个具体元素上的事件被触发时,该事件会从文档根节点开始,沿着 DOM 树向下传播,直到传播到具体元素为止。换句话说,事件会从最外层的元素开始传播,然后逐级向内传播至具体元素。

区别如下:
- 事件触发顺序:事件捕获是从外向内传播,而事件冒泡是从内向外传播。
- 默认行为:在事件捕获阶段中,可以通过调用`event.preventDefault()`来防止事件的默认行为。而在事件冒泡阶段中,调用该方法只能阻止事件进一步传播,无法阻止默认行为。
- 兼容性:事件冒泡在大多数浏览器中都得到了支持,而事件捕获并不是所有浏览器都支持。

无论是事件冒泡还是事件捕获,可以通过在元素上绑定事件处理程序来捕获和处理事件。使用 `addEventListener` 方法可以选择在捕获或冒泡阶段处理事件。

页: [1]
查看完整版本: JavaScript中的事件冒泡和事件捕获有什么区别