news 2026/8/28 7:06:41

DOM对象:元素事件

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
DOM对象:元素事件

元素的事件:某元素发生了一件事

事件处理程序:事件发生后,需要执行的函数

事件流模型:捕获阶段->目标阶段->冒泡阶段

1.注册事件:把元素的事件和事情处理程序关联起来

DOM 0(非标)的事件注册:DOM对象.on事件名称=func

(赋值操作仅能注册一个,且没有事件流模型只能在冒泡阶段)

DOM2(2000 定义了事件流模型,统一了事件传播机制):

DOM对象.addEventListener(事件名称,事件处理函数,boolean(是否在捕获阶段触发,默认false))

第三个参数可以是对象,除了是否捕获阶段触发外(capture:true),还可以多一个配置 once:true(只触发一次)

移除事件:DOM对象.removeEventListener(事件名称,事件处理函数,boolean(是否在捕获阶段触发,默认false))事件移除的事件处理函数必须是具名函数,匿名函数的话即便函数体一样,也不是指向同一个函数

2.事件对象:

当一个事件触发时,浏览器会创建一个与该事件相关的事件对象,该对象包含大量有用信息,比如事件的类型,触发的元素,鼠标的坐标等等

事件对象会作为参数传递给事件处理函数,编写事件处理函数可以通过这个对象,了解事件的详细信息,并执行更精确的操作

常用的事件对象成员:

target:事件源,触发事件的元素(无论事件是注册给谁的,target一定是目标阶段的事件源(比如父元素注册事件,子元素无事件注册,点击子元素,点击事件冒泡到父元素,触发父元素事件,target仍旧是指向子元素))

事件委托:由于时间冒泡且target永远是触发元素的事件,因此给父元素注册事件,通过判断target不同来源,分别设置不同的事件处理程序,称为事件委托。

currentTarget:绑定事件的元素(this)

type:事件类型
常用的事件对象方法:

preventDafault():阻止浏览器默认行为(dom1阻止a元素默认跳转:return fasle/href="javascript:void 0")

stopPropagation():阻止事件冒泡

eventPhase():获取事件所处阶段,参数123,对应捕获、目标和冒泡

3.事件类型:

  • 鼠标事件:

click:单击鼠标主键(左键)/聚焦时按下回车键

dblclick、mousedown、mouseup、mousemove、mouseover和mouseout

mouseEvent(鼠标事件对象)对象成员:

点击:

altKey:事件触发时,是否按下了键盘的alt键

ctrlKey、shiftKey、metaKey

button:012对应鼠标左中右键

位置:

pageX,pageY:当前鼠标相对于整个文档的xy坐标
clientX,clientY:当前鼠标相对于视口的xy坐标

offsetX,offsetY:当前鼠标相对于事件源内填充边的xy坐标(针对的是事件源)

screenX,screenY:当前鼠标相对于屏幕的xy坐标

movementX,movementY:只在鼠标移动事件中有效,表示当前鼠标相对于上一次鼠标位置的xy偏移坐标

  • 键盘事件:

keydown:按下键盘任意键触发,按住不放会重复触发

keyup、keypress

keyboardEvent(键盘事件对象)对象成员:

altKey:事件触发时,是否按下了键盘的alt键

ctrlKey、shiftKey、metaKey

key,code:返回按键的字符串

code记录按键,适配键盘布局(不管大小写)

key可以得到打印字符(可以区分大小写)

  • 焦点事件:

focus:元素获得焦点(不冒泡)

blur:元素失去焦点(不冒泡)

focusin:获取焦点(冒泡)

focusout:失去焦点(冒泡)

  • 表单事件:

submit:表单提交事件(仅form元素)

reset:表单重置事件(仅form元素)

input:用户在输入控件中输入内容触发

change:表单控件内容更改触发(改变且失去焦点后才触发)

invalid:表单验证失败事件(不冒泡)

  • 窗口事件(window对象):

load:页面上所有资源加载完成

error:资源加载失败触发(不冒泡)

beforeunload:页面卸载前触发(关闭标签页/刷新页面)

scroll:页面滚动事件:

窗口事件对象不提供滚动距离,但dom对象可以找到滚动后隐藏的部分高度和宽度

scrollTop,scrollLeft:(dom对象的属性,可随时访问)上边或者左边隐藏内容的宽高

scroolHeight,scrollWidth:全部滚动内容的高度和宽度(当滚动条不在元素内而是整个窗口时,不能直接用window,因为bom没有这个属性,我们要拿文档对象的宽高(因为window是bom对象!!!要分清window,document和doucument.doucmentElement),要用doucument.doucmentElement获取这个scroolHeight)

resize:窗口大小调整事件(监听的是视口尺寸)

屏幕尺寸:window.screen.width、window.screen.height

浏览器窗口尺寸:window.outerWidth、window.outerHeight(包括导航栏等等)

窗口尺寸(包含滚动条):window.innerWidth、window.innerHeight

视口尺寸(不包含滚动条):html.clientWidth、html.clientHeight

实际内容尺寸(内容加内边距):scrollWidth、scrollHeight

元素位置:offsetLeft,offsetTop:相对该元素的offsetParent(填充盒)body特殊,会包含整盒

offsetParent:获取元素的第一个定位祖先元素,无定位祖先元素,则找body

getBoundingClientRect():返回一个对象,该对象记录了相对于视口的距离

  • 文档事件:

DOMContentLoaded:DOM树构建完成后触发(ready事件)

redaystatechange:准备状态切换事件

readystate:

loading:正在加载中

interactive:可交互的(dom构建树完成)

complete:所有资源加载完成

  • 剪贴板事件:

copy:复制内容时触发

cut:剪切内容时触发

paste:粘贴内容时触发

clipboardData(剪切板事件对象):getData(获取数据的类型(MIME类型))

4.事件模拟:(通过代码触发事件)

click、submit、reset、focus、blur、select

事件的派遣:

dispatchEvent:要派遣的事件对象的元素.dispatchEvent(被派遣的事件对象)

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/28 7:04:28

从AI生成到可玩世界:构建交互式内容体验的技术架构

开头一个值得注意的变化正在发生:AI 内容的交付物,正在从“一段文字”“一张图片”“一条视频”变成“一个可以进入、可以操作、可以探索的世界”。过去一年,大多数人用 AI 的方式还是让模型“生成内容”,再拿这个内容去投稿、发朋…

作者头像 李华
网站建设 2026/8/28 7:02:01

具身智能模型部署实战:从YOLO、Transformer到TensorRT加速与嵌入式优化

简介:在人工智能从纯软件走向物理世界交互的进程中,模型部署与推理加速成为核心技术挑战。其核心原理在于通过模型压缩、硬件感知优化和系统级调度,解决边缘设备上计算资源受限与实时性要求的矛盾。这一技术的核心价值在于让先进的视觉、语言…

作者头像 李华
网站建设 2026/8/28 7:00:28

数据规范化:机器学习模型性能提升的基石与实战选型指南

1. 数据规范化:数学建模的“统一度量衡”如果你参加过数学建模竞赛,或者处理过任何涉及多指标、多来源数据的分析任务,大概率遇到过这样的困扰:一个指标动辄几万、几十万(比如GDP),另一个指标却…

作者头像 李华
网站建设 2026/8/28 6:58:52

从VOC到YOLO:解析蜗牛数据集与YOLOv8小样本训练实战

简介:目标检测是计算机视觉的核心任务之一,旨在识别并定位图像中的特定物体。其核心原理是通过深度学习模型学习图像特征,并预测物体的边界框和类别。这项技术具有极高的实用价值,广泛应用于自动驾驶、工业质检、安防监控和智能农…

作者头像 李华
网站建设 2026/8/28 6:58:39

ComfyUI结合QwenImageEdit与Z-Image实现精准AI面部融合工作流

简介:在AI图像生成领域,可控性编辑一直是核心挑战,尤其是面部一致性与局部精准修改。其技术原理通常涉及多模态理解、空间控制与图像融合算法的结合。通过指令理解模型解析编辑意图,再借助人脸识别与融合技术进行像素级操作&#…

作者头像 李华
网站建设 2026/8/28 6:57:58

最长上升子序列(LIS)算法详解:从动态规划到贪心二分优化

1. 从怪盗基德的滑翔翼到最长上升子序列:一个经典模型的诞生如果你看过《名侦探柯南》,一定对怪盗基德那身标志性的白色礼服和潇洒的滑翔翼印象深刻。他总能从高楼一跃而下,借助气流在城市上空穿梭,选择最合适的路线逃脱或接近目标…

作者头像 李华