详解事件触发在浏览器中的执行机制

移动端触摸事件与鼠标事件的触发机制详解 本文解析了移动端触摸与鼠标事件的触发机制。在移动设备上,一次触摸操作会按 “touchstart→touchend→mouseenter→mousemove→mousedown→mouseup→click” 顺序触发事件,点击其他区域还会触发 mouseleave。这是浏览器为兼容桌面端交互设计的模拟机制,既触发原生触摸事件,又模拟鼠标事件。文章分析了该机制的历史原因与逻辑,指出可能的事件冲突问题,建议通过设备类型判断差异化绑定事件。同时提供测试 Demo,帮助开发者直观理解触发顺序,助力解决移动端交互开发 阅读详情

浏览器事件触发机制是一种异步执行机制

主要涉及到以下几个阶段

  1. 捕获阶段:在这个阶段,事件从最外层 HTML 元素向下传递到事件的目标元素,沿途触发所有设置了捕获事件处理器(通过 addEventListener 设置第三个参数为 true)的元素。
  2. 目标阶段:在这个阶段,事件处理器将在事件的目标元素上执行。这是事件处理的核心阶段,可以访问事件对象的所有属性和方法。
  3. 冒泡阶段:在这个阶段,事件从事件的目标元素向上回溯,沿途触发所有设置了冒泡事件处理器(默认情况下)的元素。

这种机制允许开发者在事件传播的不同阶段拦截并处理事件。例如,如果你希望在某个元素内部阻止特定事件的发生,你可以在捕获阶段处理事件,而不是冒泡阶段,这样可以防止事件进一步传播。 此外,浏览器还会有一个事件队列(Event Queue)。当事件发生时,浏览器会把它们放到事件队列中,等待处理。一旦事件队列中的事件得到处理,它就会被移除。

例如,当你点击一个按钮时,浏览器会首先触发捕获阶段,然后到达目标阶段,最后进入冒泡阶段。在这个过程中,如果有其他事件发生,比如定时器触发,那么这些事件会被放在事件队列中,等到前面的事件完全处理完毕后再进行处理。

浏览器微任务执行优先级

浏览器的任务调度有几种不同的优先级,包括宏任务(macro task)、微任务(micro task)和用户交互任务(interactive task)。 宏任务包括脚本执行、网络请求、setTimeout 和 setInterval 等,这些任务通常需要消耗较多的时间和资源,因此它们的执行优先级较低。 微任务包括 Promise、MutationObserver 和 process.nextTick 等,这些任务通常比较轻量,它们会在当前宏任务执行完毕后立即执行。 用户交互任务包括鼠标点击、键盘输入等,这些任务的优先级最高,它们会被立即执行。 一般来说,浏览器的事件循环会按照以下顺序执行任务:

  • 用户交互任务
  • 微任务
  • 宏任务

但是,实际上浏览器的事件循环是由很多细节组成的,不同浏览器可能会有不同的实现。例如,Chrome 和 Firefox Firefox 在宏任务和微任务之间插入了渲染任务,这使得它们的事件循环更加复杂。 总的来说,理解这些任务调度规则有助于更好地理解和优化 Web 应用的性能。

【React进阶系列】史上最全React事件机制详解 (1)命名规范不同React事件的属性名是采用驼峰形式的,事件处理函数是一个函数;原生事件通过addEventListener给事件添加事件处理函数(2)React事件只支持事件冒泡。原生事件通过配置第三个参数,true为事件捕获,false为事件冒泡(3)事件挂载目标不同React事件统一挂载到document上;原生事件挂载到具体的DOM上(4)this指向不同原生事件:1.如果onevent事件属性定义的时候将this作为参数,在函数中获取到该参数是DOM对象。 阅读详情

相关推荐

前端技能树,面试复习第 42 天—— 浏览器原理:事件机制 | 执行栈 | 同步与异步

事件是用户操作网页时发生的交互动作,比如 click/move, 事件除了用户触发的动作外,还可以是文档加载,窗口滚动和大小调整。事件被封装成一个 event 对象,包含了该事件发生时的所有相关信息( event 的属性)以及可以对事件进行的操作( event 的方法)。...

前端进阶之路 | 中大厂、外企、国企内推 | 面试培训 | 简历修改 406

浏览器事件机制详解

浏览器的事件机制是web前端面试及开发过程中绕不开的话题,可以说一切用户操作或者浏览器的行为都离不了事件,它允许开发者通过JS处理用户的操作,并处理操作逻辑,将结果反馈给用户。本篇文章将深入浏览器事件的运行机制,和大家一起探讨其强大的功能及广泛的用法浏览器的事件可以分为以下几类:鼠标事件键盘事件表单事件窗口事件DOM事件

00后|互联网💻|办公室🍵茶农,希望通过技术改变生活|爱折腾💪|收集各类📚网络资源,好物不私藏,点点关注,不迷路。 全网搜:阿宇的编程之旅 or 阿宇的宝库 2046

手把手教你用Verilog实现MDIO控制器(附完整VHDL代码对比)

本文详细介绍了如何使用Verilog实现MDIO控制器,并提供了与VHDL实现的深度对比。通过解析MDIO协议核心要点,展示Verilog状态机架构设计和关键时序控制逻辑,同时对比VHDL在信号声明、状态机实现和双向端口处理上的差异。适用于以太网硬件设计开发者,帮助掌握MDIO控制器自主实现能力。

weixin_30682415的博客 422

浏览器-事件流理解总结

关于事件流机制的理解以及对e.target 和 e.currentTarget问题处理 一 DOM事件流 DOM(文档对象模型)结构是一个树型结构,当一个HTML元素产生一个事件时,该事件会在元素节点与根结点之间的路径传播,路径所经过的结点都会收到该事件,这个传播过程可称为DOM事件流。 上面这句话来自百度百科:DOM事件流,该如何理解这句话呢,如图所示, 当有事件触发时,从DOM的根节点开始,向内传递,这一过程可以理解成①②③④的捕获阶段;如果图中的d节点被触发,事件整个传递到达目标阶段,该阶段结束后

qq_40621378的博客 1396

Delft3D从入门到实践:安装、编译与首次模拟指南

本文为Delft3D初学者提供了一份详尽的从零开始指南。内容涵盖软件获取、许可证申请、图形界面安装、核心计算内核的编译环境搭建与编译步骤,以及最终整合运行首个水动力模拟的全流程。重点解决了Windows系统下Delft3D安装与编译的常见问题,帮助用户快速上手这一开源水动力与泥沙输运模拟工具。

weixin_29303701的博客 538

rk3568 Android12 增加 USB HOST 模式开关(二)

将原有 USB-C 改为 USB-A,并在设置中增加USB工作模式开关可以让用户选择USB端口的功能模式,例如充电、文件传输、或MIDI设备。用户能够灵活管理设备的连接方式,优化数据传输和设备兼容性。

weixin_35723192的博客 733

Chrome 浏览器运行机制

进程 浏览器最初是单进程架构,但是单进程架构缺点较为明显: 稳定性: 进程中某个模块的崩溃会导致整个进程的崩溃,比如浏览器的某些插件,或者一些复杂的JavaScript代码… … 流畅性: 单进程浏览器所有的渲染模块、插件和JavaScript执行环境都在同一个线程中,其中一个执行较慢都会影响其他功能的正常运行; 安全性: 插件通过C/C++代码编写可以获取到操作系统的权限,页面的JavaScript脚本代码也可以利用浏览器漏洞引发一些安全性问题; 现代浏览器采用了多进程架构: 浏览器主进程: 主要负

青蛙king的博客 1133

反激电源及其变压器计算与绕制

本内容以一个宽电压输入 24V3A 输出的 72W 反激电源为例来计算电路的各个参数和器件选型,包含反激变压器的计算与绕制方法。

让你爱上电路设计 1933

浏览器的事件触发顺序

在浏览器中,事件的触发顺序一般而言依据:捕获->目标阶段->冒泡三个顺序。但事件的触发顺序并不总是按以上顺序执行,当我们给同一个DOM元素同时注册捕获和冒泡事件时,事件的触发顺序是按你注册事件的顺序来执行的。 捕获: window→document→html→boby→…目标元素 冒泡: 目标元素→boby→html→document→window // 点击DOM元素时。顺序打印出:冒泡时触发 捕获时触发 var box = document.getElementById('box'); bo

weixin_39838846的博客 1406

QT应用编程: 基于UDP协议设计的大文件传输软件

一、环境介绍 QT版本: 5.12.6 编译器: MinGW 32 传输协议: UDP 功能介绍:软件由客户端和服务器组成,客户端通过 UDP协议不断循环地向服务端发送文件,文件传输速率可以达到10MB/s以上,文件传输后支持自动删除,客户端上可以支持每分钟创建一个文件并以时间戳命名,每个生成的文件可以设置大小,默认大小为6GB; 服务端收到文件之后,将文件进行存储到本地,可以指定时间自动删除文件;服务端可以动态计算传输速率,并写入日志文件; 服务器可以支持同时接收多个客户端的文件上传。...

2803

某联达OA任意用户登录漏洞复现

由于`/WebService/Lk6SyncService/DirectToOthers/GetSSOStamp.asm`j接口未作限制,导致可以通过该接口调用`admin`的`cookie`值,通过对`LoginCredence`和`LoginTimestamp`的参数修改,进而实现任意登录进去系统.

千寻的博客 1588

一文彻底搞懂浏览器事件机制、事件委托、事件冒泡、事件循环、Event Loop、react事件池封装、事件触发过程详解

事件是用户操作网页时发生的交互动作,比如 click/move, 事件除了用户触发的动作外,还可以是文档加载,窗口滚动和大小调整。事件被封装成一个 event 对象,包含了该事件发生时的所有相关信息( event 的属性)以及可以对事件进行的操作( event 的方法)

liangzhenmeng的博客 2万+

【MATLAB例程】三维下的IMM(交互式多模型),模型使用CV(匀速)和CA(匀加速),滤波使用EKF。附完整代码

CV模型:状态包含位置、速度和零加速度(9维状态),状态转移矩阵忽略加速度项CA模型:完整包含位置、速度和加速度(9维状态),状态转移矩阵包含二次项过程噪声矩阵Q分别根据两种模型的运动特性推导。

985工科博士毕业,专攻定位、导航和滤波等算法研究。从业10年,主要使用MATLAB 560

事件触发机制

首先我们先弄明白浏览器事件触发机制,分为三个阶段:   1. 事件捕获阶段:window 往事件触发处传播,遇到注册的捕获事件会触发 (addEventListener 的 true)   2.事件目标处理函数:传播到事件触发处时触发注册的事件 (博主没搞懂这个阶段)   3.事件冒泡阶段:从事件触发处往 window传播,遇到注册的冒泡事件会触发(addEventListe...

anshaobiao6449的博客 5042

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

九、浏览器事件机制

浏览器事件机制是Web开发中一个重要的概念,它允许开发者响应用户的交互行为和浏览器的行为变化。通过事件机制,可以实现动态的用户界面和复杂的交互逻辑。本文将简要介绍浏览器事件机制的基本概念、事件流、事件类型以及事件处理的方式。

weixin_45511682的博客 1675

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

浏览器事件机制

其次,给上述的例子中每个列表项都绑定事件,在很多时候,需要通过 AJAX 或者用户操作动态的增加或者去除列表项元素,那么在每一次改变的时候都需要重新给新增的元素绑定事件,给即将删去的元素解绑事件;如果用了事件委托就没有这种麻烦了,因为事件是绑定在父层的,和目标元素的增减是没有关系的,执行到目标元素是在真正响应执行事件函数的过程中去匹配的,所以使用事件在动态绑定事件的情况下是可以减少很多重复工作的。这样的事件,虽然有事件冒泡,但是只能不断通过位置去计算定位,对性能消耗高,因此也是不适合于事件委托的。

HECHEN***的博客 1215

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

【React 面经】React 中的事件机制详解

React 的事件机制与原生 DOM 事件机制不同,它基于合成事件(SyntheticEvent)构建,提供了跨浏览器的统一事件处理方式。React 通过对事件的委托(event delegation)优化了性能,使得事件处理更加高效。

lph159的博客 1367

浏览器原理之浏览器 事件机制

同步代码:永远最先执行。:最高优先级的“微任务”,任何阶段都不耽搁,先清空它的队列。:标准微任务,紧跟在 nextTick 之后,在当前阶段结束前清空。宏任务setTimeout→ 等到 timers 阶段;→ 等到 check 阶段;后面才会执行。Node.js 事件循环分成多个阶段,各阶段之间都会清微任务;又额外加了一个“超级微任务”队列,永远优先于普通微任务和宏任务。事件触发的完整流程监听(Listener Registration):使用在某个节点注册监听。

m0_74331272的博客 1075

关于resize事件,不同浏览器的触发行为

SD9014: IE 标准模式中 BODY 元素的高度变化和 IE6(S) 中 BODY 元素的宽度变化会触发 wi 标准参考 Mozilla Developer Center 对 window.onresize 的描述如下,窗口 resize 事件的事件句柄。resize 事件在窗口大小变化时触发。并非规范的一部分。 MSDN 中 onresize 是一个许多对象均支持的事件,

fgh234486580的专栏 1万+

JS浏览器事件循环机制

进程、线程 进程是系统分配的独立资源,是 CPU 资源分配的基本单位,进程是由一个或者多个线程组成的。 线程是进程的执行流,是CPU调度和分派的基本单位,同个进程之中的多个线程之间是共享该进程的资源的。 浏览器内核 浏览器是多进程的,浏览器每一个 tab 标签都代表一个独立的进程(也不一定,因为多个空白 tab 标签会合并成一个进程),浏览器内核(浏览器渲染进程)属于浏览器多进程中的一种。 浏览器内核有多种线程在工作。 GUI 渲染线程: 负责渲染页面,解析 HTML,CSS 构成 DOM 树等,当页面重绘

Jonathan的博客 2379

React事件机制

React事件机制

qq_43539854的博客 5392

浏览器的事件循环机制

浏览器的事件循环机制浏览器内核的线程Event Loop (事件循环机制)TODO:事件循环进阶:macrotask(宏任务)与microtask(微任务) 浏览器内核的线程 GUI渲染线程: 负责页面渲染,解析HTML,CSS构成DOM树等, 当页面重绘(Repaint)或者由于某种操作引起回流(reflow)都会调起该线程 GUI渲染线程和js引擎线程互斥,当JS引擎线程在工作的时候,GU...

m0_37740770的博客 398

带你了解事件循环机制(Event Loop)

什么是事件循环机制? 事件循环分为两种,分别是浏览器事件循环和node.js事件循环,本文主要对浏览器事件循环进行描述。 我们都知道JavaScript是一门单线程语言,指主线程只有一个。Event Loop事件循环,其实就是JS引擎管理事件执行的一个流程,具体由运行环境确定。目前JS的主要运行环境有两个,浏览器和Node.js。 先了解浏览器的进程和线程: 浏览器是多进程的,浏览器每一个打开一个Tab页面都代表着创建一个独立的进程。渲染进程(浏览器内核)是多线程的,也是浏览器的重点,因为页面的渲染,JS执

weixin_52092151的博客 1万+

事件轮询机制理解

首先简单了解下进程和线程的概念 进程:cpu资源分配的最小的单位,是拥有资源和独立运行的最小单位,程序执行时,会创建一个进程,cpu为其分配资源,并加入进程就绪队列。 线程:cpu调度的最小单位,是程序执行的最小单位。 进程与线程的关系:线程是在进程的基础上建立一次程序运行单位,一个进程可以有多个线程。进程相当于工厂,线程相当于工人,各进程间相互独立,同个进程中的线程共享其中的资源。 浏览器是...

苏无的博客 1万+
上一篇: VUE模板编译
下一篇: css中位移属性translate和position的区别
jsPao
博客等级 码龄7年 549粉丝 107原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值