IE与DOM事件模型详解:属性与事件流

需积分: 11 1 下载量 174 浏览量 更新于2024-08-23 收藏 526KB PPT 举报
"本文主要介绍了JavaScript中的IE事件模型属性,以及相关的事件模型概念,包括DOM事件接口、事件流和各种事件类型。对于IE特有的事件属性,如window.event、srcElement等,进行了详细解释,并提到了如何判断浏览器类型。此外,还涵盖了DOM事件流的捕获型和冒泡型,以及各种事件接口,如HTMLEvents、MouseEvents和UIEvents,以及它们包含的事件类型。" 在JavaScript中,事件模型是用于处理用户或系统操作的响应机制。IE事件模型和DOM(Document Object Model)事件模型存在一些差异。IE中有一个特殊的全局变量`window.event`,它会在任何事件触发时自动创建,提供关于当前事件的信息。例如,`type`属性可以获取事件的类型,如"click"或"mouseover"。 `srcElement`属性在IE中与DOM事件的`target`属性类似,表示触发事件的元素。`button`属性用于识别鼠标按钮,其值可以是1(左键)、2(中间键)、4(右键),在IE中按住左右键同时点击会返回3。`clientX`和`clientY`表示鼠标相对于浏览器窗口的坐标,而`offsetX`和`offsetY`则是相对于事件目标元素的坐标。 在键盘事件中,`keyCode`属性用于获取按键的ASCII码。`altKey`、`ctrlKey`和`shiftKey`分别指示Alt、Ctrl和Shift键是否被按下。`fromElement`和`toElement`则在元素之间移动时(如鼠标悬停)有用,表示移动的源元素和目标元素。`cancelBubble`属性可以阻止事件冒泡,设置为`true`等同于`stopPropagation()`。`returnValue`为`false`时相当于DOM中的`preventDefault()`,阻止事件的默认行为。 事件流是事件处理的重要方面。在IE中,事件从最外层元素向内冒泡,直到事件源。而在Mozilla和Firefox中,事件首先从最外层开始进行捕获,然后到达目标元素,最后冒泡。DOM标准引入了同时支持捕获和冒泡的事件流。 DOM事件接口包括HTMLEvents、MouseEvents和UIEvents。`HTMLEvents`接口处理如"load"、"unload"等基本事件;`MouseEvents`接口涵盖鼠标相关事件,如"click"、"mouseover";`UIEvents`接口作为其他事件接口的父接口,处理如"DOMActivate"这样的事件。 `Event`接口是所有事件接口的基础,具有`type`、`target`和`currentTarget`等属性。`target`表示实际触发事件的元素,而`currentTarget`则是在当前处理事件的元素。`eventPhase`属性指示事件当前处在哪个阶段,1代表捕获,2代表目标,3代表冒泡。 理解这些事件模型和属性对于编写跨浏览器的JavaScript代码至关重要,因为它们影响着事件处理程序的实现和事件处理的效率。在编写JavaScript时,通常需要考虑到不同浏览器对事件模型的支持情况,以确保代码的兼容性和一致性。