事件模型

考虑页面上有一个元素嵌套在另外一个元素之中的情况,我们分别称他们为父元素和子元素,子元素占据了父元素的一部分可见区域,实际情况通常会有多层的嵌套。

那么用户在子元素上单击鼠标的时候,哪个元素实际接收事件呢?子元素?父元素?还是两者都会接收?如果两者都接收的话,谁先谁后呢?

W3C组织在DOM事件规范中给出了问题的答案。

事件从父元素流出,经过中间件,向下到达最先指定的子元素,这一过程就是众所周知的”事件捕获“。子元素访问事件的时候,事件通过”事件冒泡“(event bubbling)反向流回元素层级中的高层节点。两股事件流相互结合允许开发人员以最合适其页面结构的方式捕获和处理事件。只有实际注册了事件处理器的元素才会处理事件,这保证了系统的轻量。事件流处理机制的总体方针是对各浏览器厂商不同处理行为的折中方案,它在各原生开发框架内部保持了一致,部分框架使用事件捕获,而另外一部分使用事件冒泡。

所以一般可以通过事件的stopPropagation和preventDefault方法来阻止事件默认的动作的发生

比如用户单击页面链接时,默认动作是让浏览器转向链接指定的地址,可以通过在事件处理器中调用preventDefault函数来拦截事件,阻止默认的动作。

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

推荐阅读更多精彩内容

  • 事件是一种异步编程的实现方式,本质上是程序各个组成部分之间的通信。DOM支持大量的事件,本节介绍DOM的事件编程。...
    周花花啊阅读 3,772评论 0 3
  • 事件流:事件流所描述的就是从页面中接受事件的顺序。IE:IE事件流是事件冒泡流;Netscape事件流是事件捕获流...
    Cinderella歌儿阅读 5,469评论 0 1
  • 声明:本文来源于http://www.webzsky.com/?p=731我只是在这里作为自己的学习笔记整理一下(...
    angryyan阅读 11,947评论 1 6
  • 父亲有一双大手。小时候,他总爱用手指头点我嘴唇底下的小肉坑: “给爸笑一个。”我知道笑声会带来大人们的惊赞,就...
    丙超阅读 3,222评论 0 3
  • 2017年10月26日,天气久违的清朗起来,孩子们满怀期待的出发了,这是七年级里第一次的集体出行,目的地是...
    小雅冰阅读 5,127评论 0 2

友情链接更多精彩内容