事件处理模型 --- 事件冒泡与事件捕获

如题所述

第1个回答  2022-06-26

事件冒泡和事件捕获 分别由微软和网景公司提出,这两个概念都是为了解决页面中事件流(事件发生顺序)的问题。

事件流:描述的是从页面中接收事件的顺序。
事件发生时会在元素节点与根节点之间按照特定的顺序传播,路径所经过的所有节点都会收到该事件,这个传播过程即DOM事件流。

冒泡型事件流:
事件的传播是从最特定的事件目标到最不特定的事件目标。即从DOM树的叶子到根。

捕获型事件流:
事件的传播是从最不特定的事件目标到最特定的事件目标。即从DOM树的根到叶子。事件捕获的思想就是不太具体的节点应该更早接收到事件,而最具体的节点最后接收到事件。

结构上(非视觉上)嵌套关系的元素,会存在事件冒泡的功能,即同一事件, 自子元素冒泡向父元素。(自底向上)

IE没有捕获事件。

结构上(非视觉上)嵌套关系的元素,会存在事件捕获功能,即同一事件, 自父元素捕获至子元素(事件源元素)。(自顶向下)

1.W3C标准event.stopPropagation(); 但不支持ie9以下版本。

2.IE独有 event.cancelBubble = true; 谷歌也有。

// 示列

1.event || window.event 用于IE

2.事件源对象: