「这是我参与11月更文挑战的第16天,活动详情查看:2021最后一次更文挑战」 。
在讲事件流之前,我们先来了解一下事件。
JavaScript与HTML之间的交互是通过事件来实现的。事件:就是文档或浏览器窗口中发生的一些特定的交互瞬间。我们可以使用侦听器(或事件处理程序)来预订事件,以便事件发生时执行相应的代码。说白了,就是当我们对页面上的某些元素进行某些操作(比如鼠标单击)时产生一些特定的行为。比如鼠标单击一个按钮然后弹出一个对话框。这里就涉及到了按钮的click事件,产生的行为就是弹出了一个对话框。
事件最早是在IE3和Netscape Navigator2 中出现的,当时是作为分担服务器运算负载的一种手段。在IE4和Navigator4发布时,这两种浏览器提供了相似但不同的API ———————————————— 版权声明:本文为CSDN博主「一笑程序猴」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:blog.csdn.net/lixiaosenli…
接下来我们说说关于事件流的三个阶段:
先调用捕获事件流处理函数,再调用本身事件流处理函数,最后调用冒泡事件流处理函数
1.捕获事件流
什么是捕获事件流呢?简单点来说,就是从外往内一级一级找,一级一级执行。相当于先找window,再找dom,再找html——>body这样一级一级往下去找
2.本身
3.冒泡事件流
定义:当子元素事件被触发的时候,子元素所有的父级元素'同名事件'会依次被触发
冒泡事件流与捕获事件流刚好相反,对着干它是先找最里面的,一级一级往上找,就想冒泡泡一样,从下面冒上来
如果想要查看事件流的顺序,可以用:e.eventPhase
如果想要阻断事件流:e.stopPropagation()(冒泡和捕获都可以阻断)
让注册的事件执行捕获事件流还是冒泡事件流 元素.addEventListener('事件类型',事件处理函数,true/false) true是捕获事件流,false是冒泡事件流(因为平时写的时候不会写,所以默认是false,冒泡事件流)