DOM事件响应链——捕获阶段、目标阶段、冒泡阶段

基于卷积神经网络的人脸表情识别(JAFFE篇) 1.win10/11操作系统2.python3.7以上3.tensorflow2.4以上版本(2.0其它版本需要微调)4.内存12G,显卡4G以上(没有独显倒是也能跑...)(这个可爱的妹子就是JAFFE数据集中的图片) 阅读详情

一、DOM事件响应链

        事件响应链分为三个阶段:捕获阶段、目标阶段、冒泡阶段。

<div class="fa">
    <div class="son">
        <button>按钮</button>
    </div>
</div>
<script>
    let fa = document.querySelector('.fa')
    let son = document.querySelector('.son')
    let btn = document.querySelector('.son button')
    fa.addEventListener('click',()=>{
        console.log('fa被点了')
    })
    son.addEventListener('click',()=>{
        console.log('son被点了')
    })
    btn.addEventListener('click',()=>{
        console.log('button被点了')
    })
</script>

9a3175b1dd49474b973b0fc3a217183d.png 

        当我们点击按钮之后,事件处理函数执行,打印结果,但可以发现,外面两层的div的事件也执行了,且顺序是在button之后。div的事件会执行是因为button是他们的后代元素,点击button其实相当于也点了他们,但打印顺序就是因为事件响应链的关系。

7cb3be4bfe4c41d794055c4b6c17e94a.png

事件响应链

        由图可以看出,当事件触发后,会先来到document对象,看其有没有绑定事件,有的话放在一边,然后到HTML,看有没有事件,然后是body,根据DOM树的层级往下走,这是捕获阶段。当来到我们点击的对象时,就不再往下走,同时执行这个对象的事件处理函数,这是目标阶段。执行之后就往上走,也就是先前的步骤倒退。找到目标元素的父元素,有绑定事件就执行处理函数,然后再往上,遇到事件就执行,这是冒泡阶段

二、设置事件执行阶段

        事件默认在冒泡阶段执行。所以点击button执行函数后,执行了son的事件处理函数,最后执行了fa的事件处理函数。

        addEventListener有三个参数,第一个为事件类型,第二个为事件处理函数,第三个为布尔值。默认false,表示在冒泡阶段触发。

        当fa的绑定事件的第三个参数设为true后,就是在捕获阶段触发。所以再次点击button,先执行了fa的事件处理函数,然后是目标button和冒泡阶段的son。

d43bf32bc30e4f85906da302d92aad06.png45bb76306c6d45a99c9b6c419324e558.png

        但有时候其实希望点击一个子元素后就执行这个事件处理函数,祖先元素即使有事件也不要执行,这时候我们就可以阻止事件冒泡——调用事件对象的stopPropagation()方法。 

7d6b1b52978943d9bb542ea6f3f25dd3.png

        注意:阻止冒泡是让是让事件链的执行到达目标阶段后就停止。设置事件在捕获阶段执行不叫阻止冒泡,它还是会执行冒泡阶段,只是事件已经在捕获阶段执行,所以冒泡阶段看不出现象。

 

Cadence仿真笔记(二):传统noise仿真—共源极的噪声 cadence中进行传统噪声仿真 阅读详情

相关推荐

工业相机——靶面尺寸、像元尺寸、分辨率 、传感器尺寸

由Sensor对角线长度表示,单位英寸,这里的1英寸=16mm。——靶面尺寸为宽12.7mm*高9.6mm,对角线16mm。——靶面尺寸为宽8.8mm*高6.6mm,对角线11mm。——靶面尺寸为宽7.2mm*高5.4mm,对角线9mm。——靶面尺寸为宽6.4mm*高4.8mm,对角线8mm。——靶面尺寸为宽4.8mm*高3.6mm,对角线6mm。——靶面尺寸为宽3.2mm*高2.4mm,对角线4mm。——靶面尺寸为宽14*高10.5mm,对角线17mm。

程序员,他们想的是什么?他们想的永远都是技术,他们崇尚的也永远都是技术。 9523

DOM事件流详解

DOM事件流是怎样的,什么是事件捕获,什么是事件冒泡,什么是事件委托

zxn200125的博客 792

电阻抗成像肺功能测试数据分析与直方图生成

本文介绍了基于MATLAB的电阻抗成像(EIT)肺功能测试数据分析方法。研究针对32×32像素的EIT图像序列,通过三步算法处理:首先计算特定时间点与谷值图像的差值,然后分析1秒后峰值与1秒值的差值,最终计算比值矩阵并处理异常值。系统展示了数据预处理、关键时间点检测、比值计算及统计分析的全流程,包括生成概率分布直方图和空间分布图等可视化方法。该分析为无创肺功能评估提供量化指标,可应用于临床呼吸监测和疾病诊断。

huanghm88的专栏 159

DOM事件机制

事件机制 HTML DOM 允许 JavaScript 对 HTML 事件作出反应。JavaScript 能够在事件发生时执行,比如当用户点击某个 HTML 元素时。 为了在用户点击元素时执行代码,请向 HTML 事件属性添加 JavaScript 代码: <div id='div1'>我是一个div</div> <button id='btn'>点我啊</button> <!-- 还可以在HTML标签中进行事件的绑定 需要加()--> <.

冰霜的博客 537

addEventListener的第三个参数

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34292924的博客 364

事件机制(冒泡捕获

stopImmediatePropagation()方法,这个不仅会阻止事件向祖元素的冒泡,也会阻止同一个节点上同一事件的其他的事件处理程序(优先级比它低的,同元素同事件多处理程序时);答都不是,都不会阻止事件传递,因为true是捕获阶段触发,false是在冒泡阶段触发;要阻止事件传递唯一的方式就是阻止事件冒泡事件对象调用stop。以对象属性的方式注册的事件才生效,用addEventListener/attachEvent这种是不生效的。阻止向父级元素冒泡,不可以阻止默认的跳转系统事件。...

cjx177187的博客 1004

DOM--事件响应链冒泡目标捕获

结构上(非视觉上)嵌套关系的元素,会存在事件捕获的功能,即同一事件,自父元素捕获至子元素(事件源元素)。(自顶向下)与事件冒泡是反过来的。要阻止事件传递,唯一的方式就是阻止事件冒泡:事件对象调用stopPropagation()这个函数。的冒泡,也会阻止同一个节点上同一事件的其他的事件处理程序 (优先级比它低的,同元素同事件多处理程序时)。:结构上(非视觉上)嵌套关系的元素,会存在事件冒泡的功能,即同一事件,自子元素冒泡向父元素。如 :点击和鼠标移动是不同的点击事件和滑动事件是两条

qq_56607109的博客 343

DOM——文件对象模型(事件响应链、阻止冒泡和系统默认事件、事件代理、样式操作css、防抖和节流、预加载和懒加载、async,defer)

domtree和样式结构体结合后构建呈现树(rendertree),rendertree有点类似于domtree,但有区别,rendertree能识别样式,rendertree中每个node都有自己的style,而且rendertree不包含隐藏的节点(比如displaynone的节点,还有head节点),因为这些节点不会用于呈现,而且不会影响呈现的,所以就不会包含到rendertree中。dom树就是html结构,里面包含了所有的htmltag,包括用JS添加的元素。.........

qq_52301431的博客 875

JavaScript高级编程--元素样式操作和事件

在前面学习了如何获取元素之后,我们就能操作元素的样式了不过,需要注意一下,像table的cellspacing,cellpadding等是属性,而不是样式。

retager的博客 136

GitHub 热榜项目:日榜(2026-08-18)

本期 GitHub 热榜聚焦 AI 工具扩展:渗透测试、安全技能库和代理记忆项目持续升温,本地 LLM 推理工具则围绕硬件适配与 Apple Silicon 优化展开;短视频生成、量化交易、求职管理和自托管照片等应用也同步上榜。

u130130的博客 357

React JWT 登录鉴权实战:串起 Zustand、Axios 拦截器与路由守卫

标签:React, JWT, Zustand, Axios, React Router在 React 项目里,登录接口返回 token 只是起点。真正容易遗漏的是:刷新后怎样恢复登录态、业务请求怎样自动携带 token、受保护页面怎样拦截,以及服务端怎样识别伪造或过期凭证。本文基于一个 React + Zustand + Axios + React Router + Vite Mock 项目,拆解完整数据流,并指出教学实现与生产鉴权的边界。源码仅做静态分析,。

2501_93234401的博客 274

基于ReAct框架的Agent工具调用鲁棒性提升策略

层面核心策略关键收益架构层规划与执行解耦(RP-ReAct)轨迹稳定,上下文可控执行层结构化工具调用 + Schema校验格式错误率从23%降至<0.3%反馈层Observation信息层级升级(L0→L2/L3)从盲目重试升级为智能决策测试层故障注入 + 优雅降级上线前暴露脆弱点,运行时安全兜底鲁棒性的本质,是在承认LLM会犯错、工具会失效的前提下,通过工程手段将失败控制在一定范围内。正如ReAct框架的初衷——让模型“边想边做”——工程化的目标则是让Agent“即使做错了,也知道怎么修正”

Cloud_bread的博客 199

前端Web(html+css+js+vue3)

前端Web(html+css+js+vue3)

weixin_45210565的博客 23

JavaScript 实现高效 PDF 转 HTML:加载、转换、下载

本文详细介绍了如何在 React 应用中利用 JavaScript 与 WebAssembly 技术,在浏览器端完全本地化地将 PDF 文件转换为 HTML 页面,无需依赖任何后端服务。

Eiceblue的专栏 212

python,vue3 web项目.gitignore,推送标签到git,后续项目可基于此标签作为基础继续开发

【代码】python,vue3 web项目.gitignore,推送标签到git,后续项目可基于此标签作为基础继续开发。

kobe_okok的博客 23

VS Code 快速生成Vue3 + TypeScript + Setup 基础空模板

很简单吧,以后不用手敲基础的模板,也可以将一些比较通用的在json文件内加上,类似class等,以此展开。按下Ctrl+Shift+P(Windows)/Cmd+Shift+P(Mac),输入「好了,你们看见我的原力值了么…新建vue文件实践一下,输入。失踪人口回归,原力值回家。」,选择vue.json。

M1512415的博客 165

盛最多水的容器(双指针)

本文讲解LeetCode第11题「盛最多水的容器」的解法。通过分析容器面积由宽度和最小高度决定,提出双指针解法:初始时指针位于数组两端,每次移动较矮的指针,并计算当前面积更新最大值。该策略基于贪心思想,确保不会错过最优解。JavaScript实现代码展示了O(n)时间复杂度的解法,示例演示了计算过程。这是双指针算法在数组问题中的典型应用,理解移动较矮指针的策略对解决类似问题具有启发意义。

2301_81726198的博客 324

vue3 实战系列之踩过的一些坑

最近在总结一些过去的项目经验,偶有所得,把一些之前踩过的坑汇总一下。

weixin_45879335的博客 224

告别 `innerHTML` 的烦恼:一个纯原生安全的 HTML 注入方案

本文提出了一种纯原生JavaScript方案,用于安全替换项目中危险的innerHTML方法。文章首先分析了innerHTML存在的XSS风险,如执行恶意脚本和触发事件攻击。核心方案是基于DOMParser和递归DOM遍历的白名单清洗机制,通过appendSafeHTML方法实现安全注入,全程不使用innerHTML。该方法配置了允许的HTML标签和属性,并对href/src进行协议校验。同时提供了备选方案sanitizeHTML,返回清洗后的字符串供特殊场景使用。这种零依赖方案兼顾安全性与实用性,适合大规

qq_45089709的博客 189

从HTML到我的个人主页——前端入门实战记录

前端:从零开始掌握网页开发三件套(HTML5 / CSS / JavaScript),并最终亲手搭建、测试、部署一个完整的个人网站。全文按「骨架 → 外观 → 交互 → 综合实战」的顺序展开,所有代码均可直接复制运行。

鲜衣怒马少年时,不负韶华行且知。 从第一个Hello World起,便踏上这条后端修行路。趟过分布式事务的浑水,翻过性能瓶颈的高山,方知代码如剑,需千锤百炼方显锋芒。 博客所记,皆为修行路上的顿悟与磕绊,愿与同道人共勉,稳步江湖。 203

Node.js Web 框架选型指南:从 Express 到 Hono 的全景对比

本文是一篇Node.js Web框架选型指南,从设计理念、核心机制、学习曲线、生态和适用场景五个维度对比了8个主流框架: 框架分类: 极简灵活派:Express.js、Koa.js、Hapi.js 性能优先派:Fastify、Hono 企业结构派:NestJS、AdonisJS、Egg.js 关键对比维度: Express:生态最丰富,适合快速原型开发 Koa:优雅的异步处理,适合精细控制 Fastify:性能最优,适合高并发API NestJS:企业级架构,适合复杂系统 Hono:专为边缘计算设计,冷启动

qq_41914181的博客 234

(四)TagsView 多标签页 + 侧边栏折叠 + 按钮级别权限控制

修改// 注册全部图标// 修复后的权限指令 v‑perm="'user:add'"// binding.value 就是指令传入的值,不要从el.getAttribute拿!if (!},// 增加updated,切换角色后页面更新重新判断权限if (!},})

qq_36158551的博客 196

三菱伺服控制MR-J4

三菱MR-J4-A伺服控制器的使用手册。

C++实现希尔、快速、堆排序、归并排序算法

C++实现希尔、快速、堆排序、归并排序算法,一些中文注释可能成乱码了,但是不影响代码执行。

上一篇: 前端CSS让子元素在父元素水平居中的方法
gyutdcu
博客等级 码龄5年 5粉丝 28原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值