13 事件
事件,就是文档或浏览器窗口中发生的一些特定的交互瞬间;
可以使用侦听器(或处理程序)来预订事件,以便事件发生时执行相应的代码;
这种在传统软件工程中被称为观察员模式的模型,
支持页面的行为(JavaScript代码)与页面的外观(HTML和CSS代码)之间的松散耦合;
13.1 事件流
事件流描述的是从页面中接收事件的顺序;
两种几乎相反的事件流;
事件冒泡
事件开始时由最具体的元素(文档中嵌套层次最深的那个节点)接收,
然后逐级向上传播到较为不具体的节点(文档);
事件捕获
事件捕获的思想是不太具体的节点应该更早接收到事件,而最具体的节点应该最后接收到事件;
事件捕获的用意在于在事件到达预定目标之前捕获它;
尽管”DOM2级事件”规范要求事件应该从document对象开始传播,
但这些浏览器都是从window对象开始捕获事件的;
由于老版本的浏览器不支持,因此很少有人使用事件捕获;
我们也建议读者放心地使用事件冒泡,在有特殊需要时再使用事件捕获;
DOM事件流
“DOM2级事件”规定的事件流包括三个阶段:事件捕获阶段、处于目标阶段和事件冒泡阶段;
首先发生的是事件捕获,为截获事件提供了机会;
然后是实际的目标接收到事件;
最后一个冒泡阶段对事件作出响应;
然而大多数支持DOM事件流的浏览器都会在捕获阶段触发事件对象上的事件;
结果,就是有两个机会在目标对象上面操作事件;