DOM事件流
2022/1/13 6:07:10
本文主要是介绍DOM事件流,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
事件流描述的是从页面中接收的顺序。
事件发生时会在元素节点之间按照特定的是顺序传播,这个传播过程即DOM事件流。
比如给一个 div 注册了点击事件:
DOM事件分为3个阶段:
-
捕获阶段
-
当前目标阶段
-
冒泡阶段
-
事件冒泡:IE最早提出,事件开始时由最具体的元素接收,然后逐级向上传播到DOM最顶层节点的过程。
-
事件捕获:网景最早提出,由DOM最顶层节点开始,然后逐级向下传播到最具体的元素接收的过程。
注意:
- JS代码中只能执行捕获或者冒泡其中的一个阶段。
- onclick 和 attachEvent 只能得到冒泡阶段。
- addEventListener(type, listener[, useCapture]) 第三个参数如果是true,表示在事件捕获阶段调用事件处理程序;如果是false(不写默认就是false),表示在事件冒泡阶段调用事件处理程序。
- 实际 很少用到事件捕获,更关注事件冒泡。
- 有些事件是没有冒泡的,比如:onblur、onfocus、onmouseenter、onmouseseleave
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title></title> <style> .father { position: relative; width: 200px; height: 200px; background-color: pink; margin: 100px auto; } .son { position: absolute; top: 50%; margin-top: -75px; left: 50%; margin-left: -75px; width: 150px; height: 150px; background-color: purple; color: #fff; line-height: 150px; text-align: center; } </style> </head> <body> <div class="father"> <div class="son">son盒子</div> </div> <script> //捕获阶段 true 则document->html->body->father->son /* var son = document.querySelector('.son'); son.addEventListener('click', function () { alert('son'); }, true); var father = document.querySelector('.father'); father.addEventListener('click', function () { alert('father'); }, true); */ //冒泡阶段 false或者省略 则son->father->body->html->document var son = document.querySelector('.son'); son.addEventListener('click', function () { alert('son'); }, false); var father = document.querySelector('.father'); father.addEventListener('click', function () { alert('father'); }, false); document.addEventListener('click', function () { alert('document'); }) </script> </body> </html>
这篇关于DOM事件流的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-11cursor试用出现:Too many free trial accounts used on this machine 的解决方法
- 2025-01-11百万架构师第十四课:源码分析:Spring 源码分析:深入分析IOC那些鲜为人知的细节|JavaGuide
- 2025-01-11不得不了解的高效AI办公工具API
- 2025-01-102025 蛇年,J 人直播带货内容审核团队必备的办公软件有哪 6 款?
- 2025-01-10高效运营背后的支柱:文档管理优化指南
- 2025-01-10年末压力山大?试试优化你的文档管理
- 2025-01-10跨部门协作中的进度追踪重要性解析
- 2025-01-10总结 JavaScript 中的变体函数调用方式
- 2025-01-10HR团队如何通过数据驱动提升管理效率?6个策略
- 2025-01-10WBS实战指南:如何一步步构建高效项目管理框架?