DOM事件模型分为三个等级,分别是0级、1级、2级。
0级是最早的,而且目前所有的浏览器仍支持0级DOM模型。
0级模型的注册事件,就是我们经常见到的,如:
2级的典型特点是事件传播的阶段,(捕获阶段,直接目标阶段,起泡阶段),注意在第三个阶段“起泡阶段”在IE6中不支持。
在事件传播的过程中,可以随时用Event对象的stopPropagation()方法停止事件传播。
另外如标签的href属性,是在三个事件阶段执行后,触发的href跳转,如果想阻止跳转,可以使用Event对象的preventDefault()方法阻止默认动作发生。
0级及2级的最主要区别:
0级只能为一些特定对象的特定类型的事件注册一个事件监听,但在2级模型中可以为特定对象的事件注册多个事件监听。
2级模型的Event接口的属性:
type: 发生的事件的类型。该属性的值是事件类型名,与注册事件处理程序时使用的字符串值相同(例如,“click"或“mouseover“)。
target: 发生事件的节点,可能与currentTarget不同。
currentTarget: 发生当前正在处理的事件的节点(如当前正在运行事件处理程序的节点)。如果在传播过程的捕捉阶段
或起泡阶段处理事件,这个属性的值就与target属性的值不同。
eventPhase: 一个数字,指定了当前所处的事件传播过程的阶段。它的值是常量,可能值包括Event.CPATURING_PHASE,Event.AT_TARGET或Event.BUBBLING_PHASE。
timeStamp: 一个Date对象,声明了事件何时发生。
bubbles :一个布尔值,声明该事件(和这种类型的事件)是否在文档树中起泡。
cancelable: 一个布尔值,声明访事件是否具有能用preventDefault()方法取消默认动作。
除了这七个属性外,Event接口还定义了两个方法,即stopPropagation()和preventDefault(),所有事件对象都实现
了它 们。调用stopPropagation()方法可以阻止事件从当前在处理它的节点传播。任何事件处理程序都可以调用preventDefault() 方法阻止浏览器执行与事件相关的默认动作。