JavaScript Event 对象
■知识点
event对象由系统自动创建,其属性提供了有关事件的细节信息,其方法可以控制事件的传播。在DOM事件模型中,event对象被传递给事件监听函数,但是在IE事件模型中,它被存储在window对象的event属性中。
下面列出了二级DOM事件标准定义的event对象属性,如表所示。注意,这些属性都是只读属性。
cancelable | 返回布尔值,指示事件是否可以取消的默认动作。如果使用preventDefaultO方法可以取消与 事件关联的默认动作,则返回值为true,否则为fasle |
currentTarget | 返回触发事件的当前节点,即当前处理该事件的元素、文档或窗口。在捕获和冒泡阶段,该 属性是非常有用的,因为在这两个阶段,它不同于target属性 |
eventPhase | 返回事件传播的当前阶段,包括捕获阶段(1)、目标事件阶段(2)和冒泡阶段(3) |
target | 返回事件的目标节点(触发该事件的节点),如生成事件的元素、文档或窗口 |
timeStamp | 返回事件生成的日期和时间 |
type | 返回当前event对象表示的事件的名称。如"submit” "load" "click" |
下面列出了二级DOM事件标准定义的event对象方法,如表所示,IE事件模型不支持这些方法。
方 法 | 说 明 |
initEventO | 初始化新创建的event对象的属性 |
preventDefault() | 通知浏览器不要执行与事件关联的默认动作 |
stopPropagationQ | 终止事件在传播过程的捕获、目标处理或冒泡阶段进一步传播。调用该方法后,该节点上处 理该事件的处理函数将被调用,但事件不再被分派到其他节点 |
IE7及其早期版本,以及IE怪异模式不支持标准的DOM事件模型,并且IE的event对象定义了一 组完全不同的属性,如表所示。
属 性 | 描 述 |
cancelBubble | 如果想在事件监听函数中阻止事件传播到上级包含对象,必须把该属性设为true |
fromElement | 对于mouseover和mouseout事件,fromElement引用移出光标的元素 |
keyCode | 对于keypress事件,该属性声明了被敲击的键生成的Unicode字符码。对于keydown和keyup 事件,它指定了被敲击的键的虚拟键盘码。虚拟键盘码可能和使用的键盘的布局相关 |
offsetX、offsetY | 发生事件的地点在事件源元素的坐标系统中的x坐标和y坐标 |
retumValue | 如果设置了该属性,它的值比事件监听函数的返回值优先级髙。把这个属性设置为fasle,可 以取消发生事件的源元素的默认动作 |
srcElement | 对于生成事件的window对象、document对象或element对象的引用 |
toElement | 对于mouseover和mouseout事件,该属性引用移入光标的元素 |
y | 事件发生的位置的x坐标和y坐标,它们相对于用CSS定位的最内层包含元素 |
为了兼容IE和DOM两种事件模型,可以使用下面的表达式进行兼容。
var event = event || window.event; //兼容不同模型的 event 对象
上面代码右侧是一个选择运算表达式,如果事件监听函数存在event实参,则使用event形参来传递事件信息,如果不存在event参数,则调用window对象的event属性来获取事件信息。把上面的表达式放在事件监听函数中即可进行兼容。
点击加载更多评论>>