开发工具与关键技术:JavaScript

作者:吴观成                      

撰写时间:2019年4月4日

我们了解一下上篇笔记中提到的事件的监听:
就拿捕获来举例:
事件监听
在页面上有某个元素被点击了,我们想知道它被点击了并且做出某些操作这个就叫做事件的监听,就比如我点击了P标签,但我想知道我点击了之后它和它的父级元素有没有关联,这个关联的过程是怎样的,我就在P标签和它的父级元素中添加了监听事件并让它们输出值。

事件的监听在W3C规范中定义了三个事件阶段,依次是捕获阶段,目标阶段,冒泡阶段,那为什么要定义呢?

在早期的web开发中,浏览器厂商很难回答一个哲学上的问题:当你在页面上的一个区域点击时,你真正想点的是哪个元素呢?这个问题带来了交互的定义。在一个元素的界限内点击,显得有点含糊。毕竟,在一个元素上的点击同时也发生在另一个元素的界限内。例如单击一个按钮,但你你实际上点击了按钮区域、body元素的区域以及html元素的区域。

伴随着这个问题,两种主流的浏览器Netscape(网景)和IE有不同的解决方案:

Netscape定义了事件捕获的处理方法。IE的处理方法截然相反,他们定义了的是事件冒泡的方法。

最后因兼容性问题W3C规范了两种事件的机制,就分为捕获阶段,目标阶段,冒泡阶段,在IE8之前IE一直用自己的事件机制,在IE9之后才支持了W3C的规范。
事件监听
这是W3C定义下的三个阶段图,先捕获,获取到目标值之后再冒泡。
我的理解是点击P标签,首先会通过捕获来获取到我要点的目标,也就是P标签,然后再通过冒泡来返回到后台执行P标签的绑定事件。
再举个例子:我用力打桌子,我的会手痛,假如我手会痛是一个绑定事件,触发这个事件的条件是我用力打桌子。

在我用力打到桌子的时候(由外向内),桌子会先捕获反弹的目标(我的手),捕获到目标之后就会产生反作用力让我的手痛(由内向外),相当于我触发了让我手痛的事件,这就经历了捕获,目标,和冒泡三个阶段。

W3C规范的语法:
事件监听
注:本文并非是原创,是作者本人的百度摘抄笔记和一些自己的理解。

相关文章:

  • 2018-05-10
  • 2018-12-11
  • 2020-05-04
  • 2021-12-19
  • 2021-09-16
  • 2021-10-03
  • 2020-06-11
  • 2021-03-10
猜你喜欢
  • 2020-06-12
  • 2019-08-29
  • 2021-09-08
  • 2021-09-05
  • 2021-09-27
  • 2021-08-05
  • 2021-10-19
  • 2021-10-19
相关资源
相似解决方案