javaScript中的事件对象与事件类型

事件对象
在触发DOM上的事件时,会产生一个事件对象event,包含所有与事件有关的信息,所有浏览器都支持event对象,但支持方式不同
DOM中的事件对象
兼容DOM的浏览器会将一个event对象传入事件处理程序中。无论指定事件处理程序时使用什么方法(DOM0级或DOM2级),都会传入event对象;event对象包含创建它的特定事件有关的属性和方法。触发的事件类型不一样,可用的属性和方法也不一样,但所有事件都会有以下属性和方法:

  • bubbles:布尔值,只读,表明事件是否冒泡
  • cancelable:布尔值,只读,表明是否可以取消事件的默认行为
  • currentTarget:元素,只读,其事件处理程序当前正在处理事件的那个元素
  • defaultPrevented:布尔值,只读,为true表示已经调用了preventDefault( ),DOM3级事件新增
  • detail:整数,只读,事件相关的细节信息
  • eventPhase:整数,只读,调用事件处理程序阶段:1表示捕获,2表示处于目标,3表示冒泡
  • preventDefault( ):函数,只读,取消事件的默认行为。如果cacelable是ture,则可以使用此方法
  • stopImmediatePropagation( ):函数,只读,取消事件的进一步捕获或冒泡,同时阻止任何事件处理程序被调用,DOM3级事件新增
  • stopPropagation( ):函数,只读,取消事件的进一步捕获或冒泡。如果bubbles为true,则可以使用这个方法
  • target:元素,只读,事件的目标
  • trusted:布尔值,只读,为true表示事件是浏览器生成的。为false表示事件是由开发人员通过JavaScript创建的,DOM3级事件中新增
  • type:字符串,只读,被触发的事件类型
  • view:AbstractView,只读,与事件关联的抽象视图。等同于发生事件的window对象

在事件处理程序内部,对象this始终等于currentTarget的值,而target则只包含事件的实际目标
只有在事件处理程序执行期间,event对象才存在;一旦事件处理程序执行完毕,event对象就会被销毁

IE中的事件对象

访问IE中的event对象有几种不同的方式,取决于指定事件处理程序的方法
在使用DOM0级方法添加事件处理程序时,event对象作为window对象的一个属性存在
在使用attachEvent( )添加事件处理程序,则会有一个event对象作为参数被传入事件处理程序函数中,也可以通过window对象来访问event对象
通过HTML特性指定的事件处理程序,可以通过event变量来访问event对象(于DOM中的事件模型相同)
IE的event对象也包含了创建它的事件相关的属性和方法,其中以下属性和方法是所有事件对象都包含的

  • cancelBubble:布尔值,读写,默认false,设置为true可以取消事件冒泡(与DOM中的StopPropagation( )方法作用相同)
  • returnValue:布尔值,读写,默认true,设置为false可以取消事件默认行为(与DOM中的preventDefault( )方法作用相同)
  • srcElement:元素,只读,事件的目标(与DOM中的target属性相同)
  • type:字符串,只读,被触发的事件类型

因为事件处理程序的作用域是根据它的方式来确定的,所以不能认为this会始终等于事件目标,最好使用event.srcElement

事件类型

DOM3级规定以下几类事件

  • UI(user interface,用户界面)事件,当用户与也页面上的元素交互时触发;
  • 焦点事件:当元素获得或失去焦点时触发
  • 鼠标事件:当用户通过鼠标在也买你上执行操作时触发
  • 滚轮事件:当使用鼠标滚轮(或类似设备)时触发;
  • 文本事件:当在文档中输入文本时触发;
  • 键盘事件:当用户通过键盘在页面上执行操作时触发
  • 变动(mutation)事件:当底层DOM结构发生变化时触发
  • 变动名称事件:已废弃

除了以上几类事件,HTML5也定义了一组事件,而有些浏览器还会在DOM和BOM中实现专有事件。这类事件一般都是根据开发人员需求定制,没有规范,因此不同浏览器实现可能不一致

DOM3级事件模块在DOM2级事件模块基础上重新定义了这些事件,也添加了一些新事件。包括IE9在内的所有主流浏览器都支持DOM2级事件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值