JS(十)事件对象

来源:互联网 发布:51单片机下载器 编辑:程序博客网 时间:2024/06/11 18:45

在触发DOM上的某个事件时,会产生一个事件对象event,这个对象中包含着所有与事件有关的信息。

一、DOM中的事件对象

1、兼容DOM的浏览器会将一个event对象传入到事件处理程序中,无论是DOM0还是DOM2级方法都会传入event对象。

2、在事件处理程序内部,this始终指向currentTarget,而target只包含事件的实际目标。如果直接将事件处理程序指定给了目标元素,则this、currentTarget和target包含相同的值。如果事件处理程序存在于按钮的父节点中,那么这些值是不相同的。

3、在需要通过一个函数处理多个事件时,可以使用type属性。type是指事件类型,包括click、mouseover、mouseout等等。

4、要阻止特定事件的默认行为,可以使用preventDefault方法,只有cancelable属性设置为true,才可以使用preventDefault()。

5、stopPropagation()用于立即停止事件在DOM层次中的传播,即取消进一步的事件捕获或者冒泡。

6、事件对象的eventPhase属性,用来确定时间当前正处于事件流的哪个阶段。如果在捕获阶段,则为1;如果事件处理程序处于目标对象上,则为2;如果是冒泡阶段调用的事件处理程序,则为3。注意:尽管“处于目标”发生在冒泡阶段,但是eventPhase任然一直都等于2。

7、只有在事件处理程序执行期间,event对象才会存在;一旦时间处理程序执行完毕,event对象就被销毁。

二、IE的事件对象

1、要访问IE中的对象有几种方式,取决于指定时间处理程序的方法。使用DOM0级方法添加时间处理程序时,event对象作为window对象的一个属性存在。

2、在使用DOM0级方法添加事件处理程序,event对象作为window对象的一个属性存在。如果事件处理程序是使用attachEvent()添加的,那么就会有一个event对象作为参数被传入事件处理程序函数中。

3、  如果通过HTML特性指定的事件处理程序,那么还可以通过一个名叫event的变量来访问event对象(与DOM中的事件模型相同)。

4、  因为事件处理程序的作用域是根据指定他的方式来确定的,所以不能以为this始终等于事件目标,要用event.srcElement确定,如window.event.srcElement === this。

5、  returnValue 属性相当于 DOM 中的 preventDefault()方法,它们的作用都是取消给定事件的默认行为。只要将 returnValue 设置为 false,就可以阻止默认行为。

6、  cancelBubble 属性与 DOM 中的 stopPropagation()方法作用相同,都是用来停止事件冒泡的。由于 IE 不支持事件捕获,因而只能取消事件冒泡;但 stopPropagatioin()可以同时取消事件捕获和冒泡。