JS 13.1 事件流

13 事件

事件,就是文档或浏览器窗口中发生的一些特定的交互瞬间;

可以使用侦听器(或处理程序)来预订事件,以便事件发生时执行相应的代码;

这种在传统软件工程中被称为观察员模式的模型,

支持页面的行为(JavaScript代码)与页面的外观(HTML和CSS代码)之间的松散耦合;

13.1 事件流

事件流描述的是从页面中接收事件的顺序;

两种几乎相反的事件流;

事件冒泡

事件开始时由最具体的元素(文档中嵌套层次最深的那个节点)接收,

然后逐级向上传播到较为不具体的节点(文档);

事件捕获

事件捕获的思想是不太具体的节点应该更早接收到事件,而最具体的节点应该最后接收到事件;

事件捕获的用意在于在事件到达预定目标之前捕获它;

尽管”DOM2级事件”规范要求事件应该从document对象开始传播,

但这些浏览器都是从window对象开始捕获事件的;

由于老版本的浏览器不支持,因此很少有人使用事件捕获;

我们也建议读者放心地使用事件冒泡,在有特殊需要时再使用事件捕获;

DOM事件流

“DOM2级事件”规定的事件流包括三个阶段:事件捕获阶段、处于目标阶段和事件冒泡阶段;

DOM事件流

首先发生的是事件捕获,为截获事件提供了机会;

然后是实际的目标接收到事件;

最后一个冒泡阶段对事件作出响应;

然而大多数支持DOM事件流的浏览器都会在捕获阶段触发事件对象上的事件;

结果,就是有两个机会在目标对象上面操作事件;