JavaScript中这些事件(event)类型你都知道吗?

JavaScript中有许多不同类型的事件,用于监听和响应Web页面上的各种交互和用户动作。以下是一些常见的JavaScript事件类型:

  1. 鼠标事件:

    • click: 鼠标点击元素时触发。
    • mouseovermouseout: 鼠标进入和离开元素时触发。
    • mousedownmouseup: 鼠标按下和释放鼠标按钮时触发。
  2. 键盘事件:

    • keydownkeyup: 用户按下和释放键盘键时触发。
    • keypress: 用户按下字符键时触发。
  3. 表单事件:

    • submit: 用户提交表单时触发。
    • change: 输入元素(如文本框或下拉列表)的值更改时触发。
    • focusblur: 元素获得或失去焦点时触发。
  4. 窗口事件:

    • load: 页面加载完成时触发。
    • resize: 窗口大小发生改变时触发。
    • scroll: 页面滚动时触发。
  5. 媒体事件:

    • playpauseended: 针对音频和视频元素的播放状态事件。
    • canplaycanplaythrough: 媒体可以播放时触发。
  6. 通用事件:

    • DOMContentLoaded: 当页面的DOM结构加载完成时触发。
    • error: 发生JavaScript错误时触发。
    • offlineonline: 网络连接状态改变时触发。

要使用这些事件,您可以使用JavaScript为元素添加事件监听器,然后定义要执行的函数。例如,您可以使用 addEventListener 方法来监听特定事件,如下所示:

const button = document.querySelector('#myButton');button.addEventListener('click', function() {alert('按钮被点击了!');
});

- 用户界面事件UIEvent

  1. click 事件:

    • 触发时机:当用户单击页面上的元素(如按钮、链接、图像等)时触发。
    • 用途:通常用于执行某种操作,比如提交表单、打开模态框、切换菜单等。
  2. mouseover 和 mouseout 事件:

    • 触发时机:当鼠标光标进入(mouseover)或离开(mouseout)元素时触发。
    • 用途:常用于创建悬停效果、改变元素样式或显示/隐藏相关内容。
  3. mousedown 和 mouseup 事件:

    • 触发时机:当用户按下(mousedown)或释放(mouseup)鼠标按钮时触发。
    • 用途:通常与click事件结合使用,用于实现复杂的鼠标操作,例如拖拽。
  4. keydown、keyup 和 keypress 事件:

    • 触发时机:当用户按下键盘按键(keydown)、释放键盘按键(keyup)或按下字符键(keypress)时触发。
    • 用途:常用于实现键盘快捷键、搜索框自动完成等功能。
  5. submit 事件:

    • 触发时机:当用户提交表单时触发。
    • 用途:通常用于验证表单数据、阻止默认提交行为、异步提交等。
  6. change 事件:

    • 触发时机:当表单元素(如文本框、下拉列表)的值发生变化并失去焦点时触发。
    • 用途:常用于实时搜索、过滤数据、更新页面内容等。
  7. focus 和 blur 事件:

    • 触发时机:当元素获得焦点(focus)或失去焦点(blur)时触发。
    • 用途:通常用于改变输入框的样式、显示/隐藏帮助文本或提示信息。
  8. contextmenu 事件:

    • 触发时机:当用户右键单击元素时触发。
    • 用途:通常用于自定义上下文菜单,阻止默认的浏览器上下文菜单。
  9. resize 事件:

    • 触发时机:当窗口大小改变时触发。
    • 用途:通常用于响应式设计,调整页面布局或重新计算元素大小。
  10. scroll 事件:

    • 触发时机:当页面滚动时触发。
    • 用途:通常用于创建滚动效果、懒加载图片、触发动画等。

- 焦点事件FocusEvent

1. focus事件:

  • 当HTML元素获得焦点时触发。
  • 例如,如果用户单击输入框或使用键盘导航到输入框,该输入框将获得焦点,并触发focus事件。
  • 您可以使用addEventListener方法来侦听此事件,然后执行相应的操作
document.getElementById("myInput").addEventListener("focus", function() {// 当元素获得焦点时执行的操作
});
  1. blur事件:
    • 当HTML元素失去焦点时触发。
    • 例如,如果用户从输入框中移开或使用键盘导航到其他元素,该输入框将失去焦点,并触发blur事件。
    • 您可以使用addEventListener方法来侦听此事件,然后执行相应的操作。
document.getElementById("myInput").addEventListener("blur", function() {// 当元素失去焦点时执行的操作
});

 - 鼠标事件MouseEvent

  1. mousedown:当用户在页面上按下鼠标按钮时触发。可以用于处理按钮点击、链接点击等事件。
  2. mouseup:当用户在页面上释放鼠标按钮时触发。可以用于处理按钮释放、链接点击结束等事件。
  3. mousemove:当用户在页面上移动鼠标时触发。可以用于处理鼠标移动、拖拽等事件。
  4. mouseover:当用户将鼠标指针移入元素内部时触发。可以用于处理元素悬停、提示信息显示等事件。
  5. mouseout:当用户将鼠标指针移出元素外部时触发。可以用于处理元素移出时的清理操作等。

这些事件可以通过监听元素的addEventListener方法来添加事件处理函数。当相应的事件发生时,该函数将被调用,并可以执行相应的操作,如修改元素状态、更新页面内容等。

// 获取需要监听点击事件的元素
var button = document.getElementById("myButton");// 添加点击事件处理函数
button.addEventListener("click", function() {// 在这里编写点击事件处理逻辑alert("按钮被点击了!");
});

- 滚轮事件WheelEvent

滚轮事件对象包含以下属性和方法:

  • deltaMode:表示滚轮滚动的模式,常见的有"pixel"和"line"两种模式。
  • deltaY:表示滚轮垂直方向滚动的距离,向上滚动为负值,向下滚动为正值。
  • deltaX:表示滚轮水平方向滚动的距离,向左滚动为负值,向右滚动为正值。
  • deltaZ:表示滚轮的收拢和拉扯情况,一般不常用。

开发者可以通过添加滚轮事件监听器,来触发特定的代码逻辑。例如,可以根据滚动距离来实现页面的自动滚动、图片的缩放等效果。

以下是一个简单的示例代码,展示了如何使用JavaScript监听滚轮事件:

document.addEventListener('wheel', function(event) {// 根据滚动的距离修改页面的行为var deltaY = event.deltaY;if (deltaY > 0) {// 向下滚动// 执行相关的代码逻辑} else if (deltaY < 0) {// 向上滚动// 执行相关的代码逻辑}
});

通过监听滚轮事件,开发者可以为用户提供更流畅和交互性的页面体验,并实现基于滚动的自定义交互效果。

输入事件 InputEvent

键盘事件:

  • keydown:当按下键盘上的任意键时触发。
  • keyup:当释放键盘上的任意键时触发。
  • keypress:当按下键盘上的可打印字符时触发。

这些事件对象中,可以获取到与键相关的信息,如按下的键的值、按下的键的代码和键盘布局等。

鼠标事件:

  • click:当用户点击鼠标左键或触摸屏幕时触发。
  • mousedown:当用户按下鼠标按键或触摸屏幕时触发。
  • mouseup:当用户释放鼠标按键或触摸屏幕时触发。
  • mousemove:当用户移动鼠标或触摸屏幕时触发。

这些事件对象中,可以获取鼠标位置信息、按下的鼠标按键信息等。

触摸事件:

  • touchstart:当用户触摸屏幕时触发。
  • touchmove:当用户在屏幕上滑动手指时触发。
  • touchend:当用户从屏幕上抬起手指时触发。
  • touchcancel:当触摸事件被系统打断时触发,比如来电。

这些事件对象中,可以获取触摸点的位置、滑动的方向和速度等。

开发者可以通过添加相应的事件监听器来捕获输入事件并执行相应的代码逻辑。例如,根据用户的按键来调整页面布局,根据鼠标点击来展示弹出窗口等等。

以下是一个简单的示例代码,展示了如何使用JavaScript监听键盘事件和鼠标事件:

document.addEventListener('keydown', function(event) {// 获取按下的键var key = event.key;// 根据按下的键执行相应的操作if (key === 'Enter') {// 执行提交表单的代码逻辑}
});document.addEventListener('click', function(event) {// 获取鼠标点击的位置var x = event.clientX;var y = event.clientY;// 根据位置执行相应的操作// 比如展示弹出窗口
});

 通过监听输入事件,开发者可以根据用户的输入做出响应,实现更丰富和交互性的用户界面。

 - 键盘事件KeyboardEvent

  1. keydown:当用户按下键盘上的任意键时触发该事件。按住键不松会不间断地触发该事件。
  2. keyup:当用户释放键盘上的任意键时触发该事件。
  3. keypress:当用户按下键盘上的可打印字符(字母、数字、标点符号等)时触发该事件。注意:keypress 事件不会捕获功能键(如 Shift、Ctrl 等)和操作键(如 Backspace、Delete 等)。

在键盘事件的事件处理函数中,可以通过事件对象来获取响应的按键信息和其他相关属性。常见的一些事件对象属性包括:

  • event.key 或 event.code:获取按下的键的名称或代码(通常是一个字符串,比如 "A" 或 "Enter")。
  • event.keyCode 或 event.which:获取按下的键的值,是一个数字。
  • event.ctrlKey、event.shiftKey、event.altKey、event.metaKey:这些布尔值属性用于判断是否按下了 Ctrl、Shift、Alt、Cmd(Windows 上的按键)键。

示例代码:

document.addEventListener('keydown', function(event) {// 按下任意键触发var key = event.key;var keyCode = event.keyCode;console.log('Key down:', key, keyCode);
});document.addEventListener('keyup', function(event) {// 松开任意键触发var key = event.key;var keyCode = event.keyCode;console.log('Key up:', key, keyCode);
});document.addEventListener('keypress', function(event) {// 按下可打印字符触发,不包括功能键和操作键var key = event.key;var keyCode = event.keyCode;console.log('Key press:', key, keyCode);
});

 在表单的输入框中,可以监听键盘事件来限制用户输入的字符类型;在游戏中,可以监听键盘事件来控制游戏的移动和操作等。

- 合成事件CompositionEvent

  1. compositionstart:当用户在输入法中开始进行字符的输入时触发。这个事件在一次输入中只会触发一次。
  2. compositionupdate:在输入法输入的过程中,每输入一个字符时触发一次该事件。
  3. compositionend:当输入法输入完成一个字符后触发,或输入法输入结束时触发。

通过合成事件的事件对象,可以获取到正在组合输入的字符的信息、输入的字符串以及其他相关属性,以便进行相应的处理。

示例代码:

var textarea = document.getElementById('myTextarea');textarea.addEventListener('compositionstart', function(event) {console.log('Composition start:', event.data);
});textarea.addEventListener('compositionupdate', function(event) {console.log('Composition update:', event.data);
});textarea.addEventListener('compositionend', function(event) {console.log('Composition end:', event.data);
});

以上代码是注册了三个合成事件的监听器,处理了输入法的开始、中间以及结束阶段的事件。在事件处理函数中,通过访问事件对象的属性,可以根据需要进行自定义的逻辑处理,比如显示输入进度、实时更新组合字符串等。 

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

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

相关文章

x-cmd pkg | ctop - 针对容器的类 top 命令

目录 介绍首次用户功能特点类似工具与竞品进一步阅读 介绍 ctop 是一个基于容器的类似 top 命令的性能监控工具&#xff0c;采用 Go 语言编写的&#xff0c;它以类似于 top 命令的方式显示运行中的容器的资源使用情况。ctop 提供了一个交互式的界面&#xff0c;可以让用户实时…

fo安方的个人、博客和专栏

&#x1f49d;&#x1f49d;各位领导好&#xff0c;欢迎光临&#x1f49d;&#x1f49d; ☁️☁️slogon&#xff1a;云想衣裳花想容&#xff0c;春风扶栏露华容☁️☁️ &#x1f4a5;&#x1f4a5;个人主页&#xff1a;fo安方的博客&#x1f4a5;&#x1f4a5; &#x1f49e;…

CRLF漏洞靶场记录

搭建 利用 docker 搭建 vulhub 靶场 git clone https://github.com/vulhub/vulhub.git 进入 /vulhub/nginx/insecure-configuration 目录 启动前关闭现有的 8080、8081、8082 端口服务&#xff0c;避免端口占用 docker-compose up -d 进入容器 docker exec -it insecure-…

Jmeter接口自动化02--JMeter的安装和使用

p02 高清B站视频链接 2.1 Windows环境 首先需要安装JDK&#xff0c;然后再部署JMeter。注意&#xff0c;JMeter对JDK的版本是有要求的&#xff0c;一般至少要JDK8&#xff0c;这也是目前开发过程中使用频繁的版本。 1. 安装JDK 从官网下载JDK&#xff1a;https://www.oracl…

Java人脸识别

Java人脸识别 一.提出问题&#xff0c;引入SDK的概念 什么是SDK&#xff1f; 我们并不具备开发人脸识别的能力&#xff0c;但我们可以用大公司已经开发好的工具或者功能&#xff0c;来实现人脸识别&#xff0c;而大公司提供的就叫SDK(Software Development Kit)软件开发工具包…

扫雷(c语言)

先开一个test.c文件用来游戏的逻辑测试&#xff0c;在分别开一个game.c文件和game.h头文件用来实现游戏的逻辑 主要步骤&#xff1a; 游戏规则&#xff1a; 输入1&#xff08;0&#xff09;开始&#xff08;结束&#xff09;游戏&#xff0c;输入一个坐标&#xff0c;如果该坐…

制作文件二维码有什么好处?多个文件通过一个二维码展示的方法

现在把文件做成二维码来使用是很常见的一种方式&#xff0c;那么为什么很多人会选择这种方式来分享文件呢&#xff1f;那么用文件二维码有哪些好处呢&#xff1f;下面就让小编来给大家讲解一下。 首先&#xff0c;将文件制作二维码有利于多人同时查看内容&#xff0c;方便文件…

矿山无人驾驶方案

矿山无人驾驶运输系统&#xff0c;可实现露天矿采煤装载运输的无人化&#xff0c;满足智能矿山安全、高效、绿色、环保等目标。 无人驾驶应用的总体技术架构包括“车端、场端、云端”三个层面以及相应的安全保障体系&#xff0c;其中车端的智能矿卡具备车辆感知、通信、决策和执…

验证端口连通性的工具 telent nc

验证端口连通性的工具 telent nc 1、怎么验证端口连通性的工具2、telnet3、nc 1、怎么验证端口连通性的工具 telent nc这2个工具都可以验证端口连通性 2、telnet 命令格式 默认是验证tcp端口连通性 telnet ip port如果需要验证udp端口连通性 需要加上 -u telnet -u ip por…

【回顾2023,展望2024】砥砺前行

2023年总结 转眼间&#xff0c;迎来了新的一年2024年&#xff0c;回顾2023&#xff0c;对于我来说是一个充满平凡但又充实又幸运的一年。这一年经历了很多的事情&#xff0c;包括博客创作、技术学习、出书、买房等&#xff0c;基本上每件事情都是一个前所未有的挑战和机遇、使…

PHP开发日志 ━━ php8.3安装与使用组件Xdebug

今天开头写点历史&#xff1a; 二十年前流行asp&#xff0c;当时用vb整合常用函数库写了一个dll给asp调用&#xff0c;并在此基础上开发一套仿windows界面的后台管理系统&#xff1b;后来asp逐渐没落&#xff0c;于是在十多年前转投php&#xff0c;不久后用php写了一套mvc框架&…

行云部署成长之路 -- 慢 SQL 优化之旅 | 京东云技术团队

当项目的SQL查询慢得像蜗牛爬行时&#xff0c;用户的耐心也在一点点被消耗&#xff0c;作为研发&#xff0c;我们可不想看到这样的事。这篇文章将结合行云部署项目的实践经验&#xff0c;带你走进SQL优化的奇妙世界&#xff0c;一起探索如何让那些龟速的查询飞起来&#xff01;…

乱码问题汇总

写在前面 在工作中经常会碰到各种莫名其妙的乱码问题&#xff0c;但通过之前的学习&#xff1a;字符集&字符编码-CSDN博客 &#xff0c;可以知道乱码的根本原因就是使用和数据源编码不一样的编码解码导致。 如&#xff1a;BIG5解码GB2312编码内容&#xff0c;编解码不一致…

[软件工具]pdf多区域OCR识别导出excel工具使用教程

首先我们打开软件&#xff0c;界面如下&#xff1a; 如上图&#xff0c;使用非常简单&#xff0c;步骤如下&#xff1a; &#xff08;1&#xff09;选择工具-取模板选择一个pdf文件划定自己需要识别的区域&#xff0c;如果你选择第2页指定区域则软件统一识别所有pdf第2页指定区…

VUE指令(一)

vue会根据不同的指令&#xff0c;针对不同的标签实现不同的功能。指令是带有 v- 前缀的特殊标签属性。指令的职责是&#xff0c;当表达式的值改变时&#xff0c;将其产生的连带影响&#xff0c;响应式地作用于 DOM。 1、v-text&#xff1a;设置元素的文本内容&#xff0c;不会解…

声纳技术24.1.12信号模糊函数-多普勒频移

声纳接收机常采用方法&#xff1a;匹配滤波处理 由于信号的模糊函数与匹配滤波器存在一定联系&#xff0c;因而通过分析信号模糊函数了解声纳系统性能 一、 信号的多普勒频移 多普勒频移&#xff1a;声纳与目标间相对运动使接收信号波形发生改变&#xff0c;表现为信号频率偏…

【LeetCode】206. 反转链表(简单)——代码随想录算法训练营Day01

题目链接&#xff1a;206. 反转链表 题目描述 206. 反转链表 给你单链表的头节点 head &#xff0c;请你反转链表&#xff0c;并返回反转后的链表。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5] 输出&#xff1a;[5,4,3,2,1] 示例 2&#xff1a; 输入&#xff1…

fastadmin 框架如何移除图片上传后预览中的删除按钮

在FastAdmin中&#xff0c;当我们启用了图片上传预览时&#xff0c;在预览区域会自动生成预览图和删除按钮&#xff0c;如下图&#xff1a; 如果我们想上移除掉这里的删除按钮&#xff0c;则需要启用自定义预览模板的功能。 首先我们找到视图中我们的预览容器&#xff0c;比如…

【排序算法】插入排序与希尔排序,你不想知道为什么希尔比插入更快吗?

文章目录 &#x1f680;前言&#x1f680;插入排序&#xff08;insertsort&#xff09;✈️原理✈️代码实现&#xff08;coding&#xff09; &#x1f680;总结&#x1f680;希尔排序&#xff08;shellsort&#xff09;✈️代码实现&#xff08;coding&#xff09;✈️为啥希尔…

Fast.ai

网址&#xff1a;https://colab.research.google.com/ https://colab.research.google.com/notebooks/gpu.ipynb#scrollTotMce8muBqXQP 克隆此存储库后&#xff0c;请确保您已 nbdev_install_hooks在终端中运行。这将安装 Jupyter 和 git hooks 以自动清理、信任和修复笔记本中…