JS中的事件机制(下)

上文介绍了事件流和事件类型,本文介绍事件对象和事件代理

事件对象

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

DOM中的事件对象

兼容DOM的浏览器将一个event对象传入到事件处理程序中。无论指定的事件使用什么方法,DOM 0 级和 DOM 2级,都会传入event对象

<input onclick="alert(event.type)"/>
<input onclick = "handleClick(event)"/>
<script>
  //HTML事件,html中参数必须为event
  function handleClick(e){
    console.log(e.type)
  }
  let btn = document.getElementById("myBtn")
  // DOM 0 级事件
  btn.onclick = function(e){
  console.log(e.type)
  }
  btn.addEventListener("click", function(e){
    console.log(e.type)
  },false)
</script>
属性/方法 类型 读/写 说明
bubbles Boolean 只读 表明事件是否冒泡
cancelable boolean 只读 表明是否可以取消事件的默认行为
currentTarget Element 只读 表明事件处理程序当前处理的那个程序
defaultPrevented boolean 只读 为true表示事件已经调用过preventDefault
details Interger 只读 与事件相关的细节信息
eventPhrase Interger 只读 调用事件处理程序的阶段,1表示捕获,2表示目标阶段,3表示冒泡
preventDefault() Function 只读 取消事件的默认行为
stopImmediatePropagation() Function 只读 取消事件的进一步冒泡,同时阻止任何事件处理程序被调用
stopPropagation() Function 只读 取消事件的进一步冒泡
target Element 只读 事件的目标DOM
trusted Boolean 只读 true表示是浏览器生成的
type String 只读 被触发的事件类型
view AbstractView 只读 与事件关联的抽象视图

HTML原生事件,DOM 0 级事件,DOM 2 级事件都可以获取到event对象。
Event对象成员

属性/方法 类型 读/写 说明
bubbles Boolean 只读 表明事件是否冒泡
cancelable boolean 只读 表明是否可以取消事件的默认行为
currentTarget Element 只读 表明事件处理程序当前处理的那个程序
defaultPrevented boolean 只读 为true表示事件已经调用过preventDefault
details Interger 只读 与事件相关的细节信息
eventPhrase Interger 只读 调用事件处理程序的阶段,1表示捕获,2表示目标阶段,3表示冒泡
preventDefault() Function 只读 取消事件的默认行为
stopImmediatePropagation() Function 只读 取消事件的进一步冒泡,同时阻止任何事件处理程序被调用
stopPropagation() Function 只读 取消事件的进一步冒泡
target Element 只读 事件的目标DOM
trusted Boolean 只读 true表示是浏览器生成的
type String 只读 被触发的事件类型
view AbstractView 只读 与事件关联的抽象视图

只有在事件处理程序执行期间,event对象才会存在, 执行完会销毁

IE中的事件对象

在使用DOM 0 级方法添加事件处理函数时,event对象作为window对象的一个属性存在。

 btn.onclick = function(){
  var event = window.event;
  console.log(event.type) //"click"
}

如果用atttchEvent添加的,那么就会有一个event对象作为参数传入事件处理函数中

  btn.attachEvent("onclick", function(event){
    console.log(event.type)
  })

IE的event对象同样也包含于创建他的事件相关的属性和方法。
cancelBubble

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  •   JavaScript 与 HTML 之间的交互是通过事件实现的。   事件,就是文档或浏览器窗口中发生的一些特...
    霜天晓阅读 3,744评论 1 11
  • js之事件机制 1、事件初探 1.1 js事件的概述 JavaScript事件:JavaScript是基于事件驱动...
    道无虚阅读 2,653评论 0 2
  • 声明:本文来源于http://www.webzsky.com/?p=731我只是在这里作为自己的学习笔记整理一下(...
    angryyan阅读 7,268评论 1 6
  • 利用pod trunk发布程序 注册 pod trunk register 邮箱 "用户名" --descrip...
    Theshy阅读 1,220评论 0 1
  • 1.倾听 2.剪刀使用 3.图文并茂 4.2月2号放假 5.调整自己的状态适应孩子的成长 6.汽车书籍和大开本 7...
    豆蔻妈阅读 154评论 0 0

友情链接更多精彩内容