【JS|第29期】JavaScript中的事件类型

日期:2025年1月25日
作者:Commas
签名:(ง •_•)ง 积跬步以致千里,积小流以成江海……
注释:如果您觉得有所帮助,帮忙点个赞,也可以关注我,我们一起成长;如果有不对的地方,还望各位大佬不吝赐教,谢谢^ - ^
1.01365 = 37.7834;0.99365 = 0.0255
1.02365 = 1377.4083;0.98365 = 0.0006


文章目录

  • 一、前言
  • 二、常见的事件类型
    • (1)用户界面事件 (UI Events)
    • (2)焦点事件 (Focus Events)
    • (3)鼠标事件 (Mouse Events)
    • (4)键盘事件 (Keyboard Events)
    • (5)输入事件 (Input Events)
    • (6)触摸事件 (Touch Events)
    • (7)滚动事件 (Scroll Events)
    • (8)动画事件 (Animation Events)
    • (9)过渡事件 (Transition Events)
  • 三、实际应用案例
    • (1)用户界面事件 (UI Events)
    • (2)焦点事件 (Focus Events)
    • (3)鼠标事件 (Mouse Events)
    • (4)键盘事件 (Keyboard Events)
    • (5)输入事件 (Input Events)
    • (6)触摸事件 (Touch Events)
  • 四、结语


在这里插入图片描述


一、前言


Web 开发的世界里,事件是用户与网页交互的桥梁。JavaScript 为我们提供了丰富的事件类型,使得开发者能够轻松地响应用户的行为,创造出丰富多样的交互体验。今天,我们就来全面了解一下这些事件类型及其应用。

二、常见的事件类型


JavaScript 中有许多常见的事件类型,它们用于处理各种用户交互和浏览器行为。以下是一些常见的事件类型及其简要描述:

(1)用户界面事件 (UI Events)

用户界面事件涉及页面加载、卸载和调整大小等操作。

  • load :当资源(如图像、脚本或整个文档)被加载完成时触发。常用于确保在 DOM 完全加载后执行脚本。
  • unload :当资源被卸载时触发,例如用户离开页面。
  • abort :当加载被取消时触发,如图像加载中断。
  • error :发生错误时触发,例如无法加载图像。
  • select :用户选择文本框(inputtextarea)中的文本时触发。
  • resize :窗口或框架大小调整时触发。
  • scroll :用户滚动元素时触发。

(2)焦点事件 (Focus Events)

焦点事件关注于元素获得或失去焦点的情况。

  • blur :元素失去焦点时触发。
  • focus :元素获得焦点时触发。
  • focusin :元素即将获得焦点时触发,会冒泡。
  • focusout :元素即将失去焦点时触发,会冒泡。

(3)鼠标事件 (Mouse Events)

鼠标事件是用户使用鼠标与页面交互时触发的。

  • click :用户点击元素时触发。
  • dblclick :用户双击元素时触发。
  • mousedown :用户按下鼠标按钮时触发。
  • mouseup :用户释放鼠标按钮时触发。
  • mouseover :鼠标指针移动到元素上时触发。
  • mouseout :鼠标指针移出元素时触发。
  • mousemove :鼠标指针在元素上移动时触发。
  • mouseenter :鼠标指针进入元素时触发,不会冒泡。
  • mouseleave :鼠标指针离开元素时触发,不会冒泡。

(4)键盘事件 (Keyboard Events)

键盘事件涉及用户与键盘的交互。

  • keydown :用户按下键盘上的任意键时触发。
  • keyup :用户释放键盘上的键时触发。
  • keypress :用户按下并释放一个字符键时触发(已废弃)。

(5)输入事件 (Input Events)

输入事件关注于表单元素的值变化。

  • inputinputselecttextarea 元素的值被修改时触发。
  • change :元素的值被修改并失去焦点时触发。

(6)触摸事件 (Touch Events)

触摸事件适用于触摸屏设备。

  • touchstart :用户触摸屏幕时触发。
  • touchmove :用户在屏幕上移动手指时触发。
  • touchend :用户从屏幕上移开手指时触发。
  • touchcancel :触摸事件被意外中断时触发。

(7)滚动事件 (Scroll Events)

  • scroll : 当用户或代码滚动元素时触发。

(8)动画事件 (Animation Events)

  • animationstart : 当 CSS 动画开始时触发。
  • animationend : 当 CSS 动画结束时触发。
  • animationiteration : 当 CSS 动画重复播放时触发。

(9)过渡事件 (Transition Events)

  • transitionstart : 当 CSS 过渡开始时触发。
  • transitionend : 当 CSS 过渡结束时触发。

三、实际应用案例


JavaScript 事件的使用,可以让我们的 Web 应用更加生动和互动,以下是一些事件的实际应用案例与大家分享下:

(1)用户界面事件 (UI Events)

示例:页面加载完成后做相应的操作。

window.addEventListener('load', function() {alert('Hello World!');
});

当页面完全加载后,会弹出一个Hello World

(2)焦点事件 (Focus Events)

示例:输入框获得焦点时改变边框颜色

document.querySelector('#myInput').addEventListener('focus', function() {this.style.borderColor = 'blue';
});

当用户点击输入框时,输入框的边框颜色会变为蓝色。

(3)鼠标事件 (Mouse Events)

实际案例:实现图片的鼠标悬停放大效果

document.querySelector('#myImage').addEventListener('mouseover', function() {this.style.transform = 'scale(1.1)';this.style.transition = 'transform 0.3s ease';
});document.querySelector('#myImage').addEventListener('mouseout', function() {this.style.transform = 'scale(1)';
});

当鼠标悬停在图片上时,图片会放大10%,并在鼠标移开后恢复原大小。

(4)键盘事件 (Keyboard Events)

示例:监听键盘事件实现快捷键功能

document.addEventListener('keydown', function(event) {if (event.ctrlKey && event.key === 's') {event.preventDefault();saveDocument();}
});function saveDocument() {alert('文档已保存!');
}

在这个示例中,我们阻止了默认的Ctrl+S保存行为,并实现了自定义的保存文档功能。

(5)输入事件 (Input Events)

实际案例:实时显示输入框中的字符数

document.querySelector('#myTextarea').addEventListener('input', function() {document.querySelector('#charCount').textContent = this.value.length;
});

在这个示例中,我们实时更新一个元素来显示用户在文本区域输入的字符数。

(6)触摸事件 (Touch Events)

示例:实现简单的触摸滑动效果

let startX;document.querySelector('#myElement').addEventListener('touchstart', function(event) {startX = event.touches[0].clientX;
});document.querySelector('#myElement').addEventListener('touchmove', function(event) {const currentX = event.touches[0].clientX;const diffX = currentX - startX;this.style.transform = `translateX(${diffX}px)`;
});document.querySelector('#myElement').addEventListener('touchend', function(event) {// 可以在这里处理触摸结束的逻辑
});

在这个例子中,我们通过触摸事件实现了元素的滑动效果。

四、结语


了解和掌握 JavaScript 中的事件类型对于前端开发者来说至关重要。通过合理使用这些事件,我们可以创建出更加丰富和响应式的用户界面。希望本文能够帮助您更好地理解这些事件类型,并在实际项目中灵活运用。


参考文章:

  • 《MDN Web docs》- 事件介绍
  • 《MDN Web docs》- 事件参考

版权声明:本文为博主原创文章,如需转载,请给出:
原文链接:https://blog.csdn.net/qq_35844043/article/details/145339699

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/68170.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于Java+socket实现多线程聊天室-控制台版

基于Javasocket实现多线程聊天室-控制台版 一、系统介绍二、功能展示1.运行效果 三、代码展示四、其它1.其他系统实现2.获取源码 一、系统介绍 首先启动server端,然后启动client端。任意一个client发送给server的消息都将会被转发给所有在线的client,实…

Redis-缓存

1.缓存 1.1 什么是缓存? 越野车,山地自行车,都拥有"避震器",防止车体加速后因惯性,在酷似"U"字母的地形上飞跃,硬着陆导致的损害,像个弹簧一样;同样,实际开发中,系统也需要"避震器",防止过高的数据访问猛冲系统,导致其操作线程无法…

群晖docker获取私有化镜像http: server gave HTTP response to HTTPS client].

群晖docker获取私有化镜像提示http: server gave HTTP response to HTTPS clien 问题描述 层级时间用户事件Information2023/07/08 12:47:45cxlogeAdd image from xx.xx.31.240:1923/go-gitea/gitea:1.19.3Error2023/07/08 12:47:48cxlogeFailed to pull image [Get "http…

MySQL日志详解——日志分类、二进制日志bin log、回滚日志undo log、重做日志redo log

文章目录 一、前言1.1 MySQL体系结构1.2 MySQL日志分类1.3 其他几种日志1.3.1 查询日志1.3.2 慢查询日志1.3.3 错误日志 二、bin log 二进制日志2.1 bin log简介2.2 binlog日志格式2.3 日志删除2.4 写入/刷盘机制 三、undo log 回滚日志3.1 undo log简介3.2 隐藏字段 —— 事务…

算法中的移动窗帘——C++滑动窗口算法详解

1. 滑动窗口简介 滑动窗口是一种在算法中常用的技巧,主要用来处理具有连续性的子数组或子序列问题。通过滑动窗口,可以在一维数组或字符串上维护一个固定或可变长度的窗口,逐步移动窗口,避免重复计算,从而提升效率。常…

亚博microros小车-原生ubuntu支持系列:11手指控制与手势识别

识别框架还是沿用之前的了MediaPipe Hand。 背景知识不摘重复,参见之前的:亚博microros小车-原生ubuntu支持系列:10-画笔-CSDN博客 手指控制 src/yahboom_esp32_mediapipe/yahboom_esp32_mediapipe/目录下新建文件10_HandCtrl.py&#xff…

LabVIEW太阳能照明监控系统

在公共照明领域,传统的电力照明系统存在高能耗和维护不便等问题。利用LabVIEW开发太阳能照明监控系统,通过智能控制和实时监测,提高能源利用效率,降低维护成本,实现照明系统的可持续发展。 ​ 项目背景 随着能源危机…

Linux的权限和一些shell原理

目录 shell的原理 Linux权限 sudo命令提权 权限 文件的属性 ⽂件类型: 基本权限: chmod改权限 umask chown 该拥有者 chgrp 改所属组 最后: 目录权限 粘滞位 shell的原理 我们广义上的Linux系统 Linux内核Linux外壳 Linux严格…

Redis - 数据类型与编码方式

Redis中常用的5种数据类型 包括字符串、哈希、列表、集合、有序集合 字符串,相当于Java中的String哈希,相当于Java中的HashMap列表,相当于Java中的List集合,相当于Java中的Set有序集合,多存储了一个权重 Redis承诺使…

git Bash通过SSH key 登录github的详细步骤

1 问题 通过在windows 终端中的通过git登录github 不再是通过密码登录了,需要本地生成一个密钥,配置到gihub中才能使用 2 步骤 (1)首先配置用户名和邮箱 git config --global user.name "用户名"git config --global…

如何为64位LabVIEW配置正确的驱动程序

在安装 64位 LabVIEW 后,确保驱动程序正确配置是关键。如果您首先安装了 32位 LabVIEW 和相关驱动,然后安装了 64位 LabVIEW,需要确保为 64位 LabVIEW 安装和配置适当的驱动程序,才能正常访问硬件设备。以下是详细步骤&#xff1a…

BGP边界网关协议(Border Gateway Protocol)路由聚合详解

一、路由聚合 1、意义 在大规模的网络中,BGP路由表十分庞大,给设备造成了很大的负担,同时使发生路由振荡的几率也大大增加,影响网络的稳定性。 路由聚合是将多条路由合并的机制,它通过只向对等体发送聚合后的路由而…

戴尔电脑用u盘重装系统_戴尔电脑用u盘重装win10系统教程

戴尔电脑用u盘重装系统?戴尔电脑这几年默认预装win10家庭版和win11家庭版。有的用户用上了预装win11家庭版的戴尔电脑,使用一段时间依然不习惯,于是想退回win10。但不知道怎么重装win10,这几年的戴尔电脑建议采用U盘方式安装系统比…

QT TLS initialization failed

qt使用QNetworkAccessManager下载文件(给出的链接可以在浏览器里面下载文件),下载失败, 提示“TLS initialization failed”通常是由于Qt在使用HTTPS进行文件下载时,未能正确初始化TLS(安全传输层协议&…

【图文详解】lnmp架构搭建Discuz论坛

安装部署LNMP 系统及软件版本信息 软件名称版本nginx1.24.0mysql5.7.41php5.6.27安装nginx 我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客: 关闭防火墙 systemctl stop firewalld &&a…

06、Redis相关概念:缓存击穿、雪崩、穿透、预热、降级、一致性等

Redis相关概念:缓存击穿、雪崩、穿透、预热、降级、一致性等 Redis缓存雪崩、缓存击穿、缓存预热热点key、缓存降级、短链接、分布式锁秒杀、预减库存、 堆外缓存Redis架构设计、Redis动态刷新、Redis和DB双写一致性、过期删除策略、集群数据倾斜等一、缓存雪崩 缓…

【记录自开发的SQL工具】工具字符拼接、Excel转sql、生成编码、生成测试数据

记录自己开发的一个SQL聚合工具 功能介绍: 文本加引号 给多行文本前后添加引号,并用逗号连接,直接复制到 sql 中的 in 条件中 Excel转SQL 适用于将Excel表格的数据,批量导入到数据库的场景 此工具能快速将excel表格转换为i…

2024年工作总结

一、2024年个人成长、工作总结 1.博客文章 在这一年的创作中,共发布95篇文章,其中: Scrum敏捷项目管理: Scrum敏捷项目管理 前端技术vue jquery: jQuery(一)jQuery基本语法 分布式事务&…

【技术洞察】2024科技绘卷:浪潮、突破、未来

涌动与突破 2024年,科技的浪潮汹涌澎湃,人工智能、量子计算、脑机接口等前沿技术如同璀璨星辰,方便了大家的日常生活,也照亮了人类未来的道路。这一年,科技的突破与创新不断刷新着人们对未来的想象。那么回顾2024年的科…

Python 之 Excel 表格常用操作

示例文件 test.xlsx 将各个表单拆分成单独的 Excel 文件 import os.pathimport openpyxl import pandasdef handle_excel(file_path):dirname os.path.dirname(file_path)basename os.path.basename(file_path).split(".")[0]wb openpyxl.load_workbook(file_pat…