JavaScript中的事件对象

   JavaScript中的事件对象是非常重要的,恐怕是我们在项目中使用的最多的了。在触发DOM上的某个事件时,会产生一个事件对象event,这个对象中包含这所有与事件有关的信息。下面将会讲到DOM中的事件对象、IE中的事件对象以及跨浏览器的事件对象三个部分。

  对于事件处理程序,大家可以看我的博文《JavaScript中的五种事件处理程序》。

 

第一部分:DOM事件对象

  兼容DOM的浏览器会将一个event对象传入到事件处理程序中,无论是HMTL特性、DOM0级还是DOM2级,都会传入这个event对象。这个对象具有下面的属性和方法。

  DOM事件对象的属性有:

  • bubbles  布尔值 只读 表明事件是否冒泡

  • cancelable 布尔值 只读 表明是否可以取消事件的默认行为

  • currentTarget  元素 只读  表明事件处理程序正在处理的元素

  • defaultPrevented 布尔值 只读 表明是否调用了preventDefault()方法

  • detail 数值 只读 表明与事件相关的细节信息

  • eventPhase  数值 只读  表明事件处理程序的阶段:1为捕获阶段,2为处于目标阶段,3为冒泡阶段

  • target  元素 只读 事件的目标

  • trusted  布尔值  只读  true表示事件为浏览器生成,false表示开发人员通过js创建

  • type  字符串  只读  表明被触发事件的类型

 

  DOM事件对象的方法有:

  • preventDefault()   只读 用来取消事件的默认行为

  • stopPropagation()  取消事件的冒泡

  • stopImmediatePropagation() 取消事件的捕获或者冒泡(DOM3级新增方法)

 

  下面举例说明上述几个属性和方法的使用:

例1

preventDefault():此方法可以阻止事件的默认行为,比如,点击a标签,本来应该会跳转到相应的url,但是我们可以使用方法阻止,如下所示:

  

 View Code

 

 

例2:

实际上,我们也可以不使用event而是在function中传入一个参数来当作event使用(DOM0级和DOM2级都可以),如下所示:

 View Code

 

 

例3:

  实际上,利用event的type属性结合switch语句我们还可以做更多的事情!

  比如我们需要在点击按钮、划过按钮和划出按钮时做不同的事情,我们可以这样写(这里使用DOM0级添加事件处理程序,方法一样,事件对象依然是event,也可以传入一个参数,以该参数作为对象):


    
    bubble
    
    
    点击我     

这样写当然可以得到想要的效果,但是我们还可以这样写:


    
    bubble