DOM重点核心(注册事件+DOM事件流)

news2024/11/17 11:55:55

目录

1.注册事件

注册时间概述

addEventListener()

删除事件

2.DOM事件流

DOM事件流理论

事件对象

事件对象的常见属性和方法

e.targe 和 this的区别

阻止默认行为

阻止冒泡

事件委托

禁止右键菜单和禁止选中文字

获得鼠标的坐标(可视区、页面、浏览器)

常用键盘事件

keyCode判断用户按下的键的ASCII值


1.注册事件

注册时间概述

传统注册方式,特点是注册时间是唯一的

方法监听注册方式,特点是同一个元素同一个事件乐意注册多个监听器

addEventListener()

eventTarget.addEventListener(type,listener[,useCapture])

type 事件类型字符串,比如click,mouseover,这里要注意不需要带on了

listener事件处理函数,事件发生时,会调用该监听函数

useCapture 可选参数,是一个布尔值,默认值是false

addEventListener(eventName,fn)    不需要添加'on'

attachEvent  中需要添加‘on’

删除事件

传统方式删除  div[0].οnclick=null

第一种  写eventTarget.addEventListener('click',函数),就是把函数体写在了外面 里面的函数调用不用再加小括号

          div[0].addEventListener('click',fn)        //不要看图片中的,这一步是要写的

          function fn(){

                alert(22)

                div[1].removeEventListener('click',fn)

}

第二种,先写eventTarget.attchEvent('onclick',函数) ,再同上写

两种写法无非就是第二种比第一种多了“on”

2.DOM事件流

DOM事件流理论

捕获阶段从大到小,冒泡阶段从小到大

事件发生时会在元素节点之间按照特定的顺序传播,这个传播过程即DOM事件流

addEventListener(type,listener[,useCapture])   

addEventListener(type,function(){},true/false)

  第三个参数如果是true,表示在事件捕获阶段调用事件处理程序;如果是false或者是省略,表示在事件冒泡阶段调用事件处理程序

有些事件是没有冒泡的,比如onblur 、onfocus 、onmouseenter、 onmouseleave

事件对象

eventTarget.οnclick=function(event){}

eventTarget.addEventListener('click',function(event){})

event就是事件对象,写在函数的小括号中

标准浏览器中将event 单写成e就可以识别,但是有些不能用,需要写window.event来获取查找

事件对象的常见属性和方法

e.targe 和 this的区别

e.target 返回的是触发事件的对象(元素)      this 返回的是绑定事件的对象(元素)

e.target  点击了哪个元素,就返回那个元素; this 不论点击谁,返回的都是绑定事件

一些兼容性问题

阻止默认行为

返回事件类型

div.addEventListener('事件类型',调用函数)   函数中写e.type

阻止默认行为(如让链接不跳转、点击提交按钮不提交)

普通浏览器 e.preventDefault()      前面接受的对象(var)是链接或者按钮

低版本浏览器 e.returnValue;

只限于传统的注册方式 return false

阻止冒泡

标准浏览器  e.stopPropagation()

低版本浏览器  e.cancelBubble=true    可以先进行一个判断

写在函数中,可以组织后面的冒泡

事件委托

不是给每个子节点单独设置事件监听器,而是将事件监听器设置在其父节点上,然后利用冒泡原理影响设置每个节点

绑定父级元素,在父级元素的函数中添加需求    e.target可以获得点击对象

禁止右键菜单和禁止选中文字

contextmenu主要控制应该何时显示上下文菜单,主要用于程序员取消默认的上下文菜单

在函数中添加e.preventDefault()即可

selectstart 开始选中  (不能进行复制等操作)

在函数中添加e.preventDefault()即可

获得鼠标的坐标(可视区、页面、浏览器)

client 鼠标在可视区的x和y坐标   e.clientX x方向     e.clientY y方向

page 鼠标在文档页面的x和y坐标   e.pageX  x方向   e.pageY y方向

screen 鼠标在电脑屏幕的x和y坐标     e.screenX x方向    e.screenY y方向

移动天使

用到了mousemove的触发方式,只要鼠标移动1px,事件就会被触发

常用键盘事件

onkeyup 某个按键被松开时触发

onkeydown  某个按键被按下时触发

onkeypress  某个按键被按下时触发 但是它不识别功能键,比如ctrl、shift、箭头等

使用addEventListener时不用加‘on’

三个时间的执行顺序是:keydown-keypress-keyup

keyCode判断用户按下的键的ASCII值

onkeydown和onkeyup不区分大小写    onkeypress区分大小写

将时间方式定义为"keyup"或者其他,在函数中直接console.log(e),就会出现点击按钮输出的结果

输入内容案例

用keyup而不用keydown,前者是弹开后进入判断再去执行事件不会再输入内容,而后者是直接输入内容再去进行判断

目标位置.focus()  focus直接定位到目标位置

这里写的是document.addEventListener(),是因为是在整个网页中点击的,绑定的是整个网页

快递单号查询

在大盒子中放两个小盒子,一个是弹出的显示大框,一个是输入框

keydown和keypress在文本框中的特征:两个事件触发时,文字还没有落进文本框 ,而keyup触发时文字已经落入文本框了

还有一个使用keyup的原因是,在按键的时候能先输入文字,即文本框中有字,隐藏的框能检测到value值不为空,所以能显示出来;如果换成其他两种形式,第一次在按键的时候,显示大框不会弹出来

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

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

相关文章

VS Code 将输入的tab自动替换为空格

VS Code 将tab缩进修改为空格缩进TOC 位置 图1 图2 图3 图4 使能 同时勾选图2和图3的两个配置项,在编辑器中输入的Tab,会自动替换为 4(图4的Tab Size)个空格 检查 请参考 https://blog.csdn.net/de_se/article/details/131758698?ops_request_m…

短剧看剧系统,当前互联网热门项目工具系统模板。

目录 揭秘爆款神器:短剧看剧系统,让你的内容火遍全网! 一、短剧看剧系统:一站式解决方案 二、灵活定价,实现收益最大化 三、高效管理,团队协作更轻松 四、数据驱动,精准把握市场动态 五、智…

Spring事务和事务传播机制(@Transactional)

文章目录 Spring事务(Transactional详解)什么是事务为什么需要事务事务的操作(sql) Spring中的事务实现Spring编程式事务Spring声明式事务 TransactionalTransactional可以用来修饰方法或类对异常进行捕获细节: Transactional详解三个属性1. …

思科模拟器学习1--Vlan Trunk

实验说明:将三台电脑的vlan 加到一台交换机里面,为了验证什么是虚拟局域网,把一个设备隔成三个空间,三个电脑互相不能通讯;目的是:vlan 1的通讯不可以向vlan 2传送,就是消息传送互不干扰的&…

node安装以及node的包管理工具

node安装以及node的包管理工具 node安装nvm管理工具 node安装 1、下载node链接: 点击这里 2、选择需要下载的版本以及对应的系统版本 nvm管理工具 1、下载nvm链接: 点击这里 2、双击运行.exe文件 全部默认安装即可 3、nvm常用命令 nvm list avaliable 显示所有可以下载的n…

QT——tableWidget-跳变之舞V1.0-记录学习【1】

QT——tableWidget-跳变之舞V1.0-记录学习【1】 文章目录 QT——tableWidget-跳变之舞V1.0-记录学习【1】前言一、利用QT创建项目文件1.1 完整项目文件如下图所示:1.2 演示: 二、声明文件:2.1 主界面声明文件:mainwindow.h;2.2 控制窗口声明文…

USB3.0接口——(3)协议层(包格式)

1.协议层 1.1.超高速传输事务 超高速事务(SuperSpeed transactions)由主机对设备端点请求或发送数据开始,并在端点发送数据或确认收到数据时完成。 超高速总线上的数据传输(transfer)是主机请求设备应用程序生成的数…

76岁林子祥升级做爷爷,亲自为孙女取名

林子祥与前妻吴正元的儿子,现年39岁的林德信入行以来绯闻不少,自与圈外女友Candace拍拖后便修心养性,去年他已经低调与拍拖5年多Candace完婚,正式步入人生另一阶段。 昨日(5月12日)林德信借母亲节这个温馨日…

如何在控制台应用程序里面托管ASP.NET Core网站

目录 介绍运行效果开发环境项目结构第三方库引用编写代码介绍 本文如何不通过IIS,使用控制台程序作为宿主主机来运行我们的asp.net core开发的网站程序。通过改案例你也可以后期通过winform或者wpf作为宿主来运行我们的asp.net core开发的网站。 运行效果 开发环境 vs2022+.…

2024年5月面试准备

2024年5月面试准备 资料来源Java基础泛型注解异常反射SPI机制Java集合CollectionMap 并发基础线程并发关键字并发集合Lock核心类并发集合核心类原子类核心类线程池核心类ScheduledThreadPoolExecutorForkJoinPoolFokJoinTask JUC原子类: CAS, Unsafe和原子类详解JUC 工具类 Jav…

【打字】打字训练之针对性键盘区域练习

本文章的核心点是:使用代码生成自己想要训练的键位的词汇,然后导入到打字软件针对性练习 一个程序员突然想纠正打字习惯源于腱鞘炎,虽然使用双拼打字已经不慢了,但是姿势不是很正确,导致了腱鞘炎。 所以想着好好纠正指…

odoo16 银行对账单导入改造

解决问题: odoo原生功能的话 是不能在系统上临时处理文件内容的,只会提示文件内容格式不对。 原始文件格式 在头部与尾部 格式问题,例如csv文件和 C53 文件,做一个前置弹框处理数据之后再导入 camt效果: csv效果:

bugfix:遇见“隐形字符”:ⅰ与i的编码迷局

前言 在软件开发的世界里,遇到各种奇奇怪怪的bug是在所难免的。今天,我就遭遇了一个看似简单实则棘手的问题——用户反馈账号无法登录,系统一直提示“账号不存在”。一番抽丝剥茧后,我发现问题竟然出在一个不起眼的字符上&#x…

xFormers

文章目录 一、关于 xFormers二、安装 xFormers三、基准测试(可选)测试安装 四、使用 xFormers1、Transformers 关键概念2、Repo 地图注意力机制Feed forward mechanismsPositional embeddingResidual pathsInitializations 3、主要特征4、安装故障排除 一…

小红书自动私信获客,打造个人品牌

在当今这个内容为王、社交至上的时代,小红书作为新兴的社交电商平台,凭借其独特的社区氛围和强大的种草能力,成为了众多KOL、商家以及个人品牌打造的首选平台。想要在小红书上脱颖而出,精准引流获客,利用自动私信功能不…

Ajax额

原生Ajax xml 已被json取代 http 请求方法urlhttp版本号 network 谷歌浏览器查看请求报文和响应报文 F12 network header里面有 请求头 响应头 点击view source 可以查看请求响应行 请求体在请求行头下面 get请求有url参数,请求体变为query String…

汇昌联信科技:拼多多电商的运营流程有哪些?

在当今互联网高速发展的时代,电商平台层出不穷,其中拼多多以其独特的团购模式和低价策略迅速崛起,成为众多消费者和商家的新宠。那么,拼多多电商的运营流程究竟包含哪些环节呢?接下来,我们将从商品上架、营销推广、订…

基于PySpark进行去哪儿网数据分析

基于PySpark进行去哪儿网数据分析 本文介绍了如何使用PySpark对去哪儿网的数据进行分析,从而洞察用户偏好、热门目的地以及销售趋势。 1.数据加载 我们需要确保已经准备好了PySpark的开发环境,并且准备好了去哪儿网的数据集。可以通过创建SparkSessio…

vue cmd执行报错 ‘vue‘ 不是内部或外部命令

使用vue脚手架快速搭建项目,在cmd中执行:vue init webpack vue-demo,报错: vue 不是内部或外部命令,也不是可运行的程序 或批处理文件。 解决方法,执行如下的命令 npm config list 注意:找到prefix等号后…

在Ubuntu命令行中一行代码配置C++的OpenCV库

本文介绍在Linux操作系统的Ubuntu版本中,配置C 语言环境下的计算机视觉库OpenCV的方法。 首先,为了保证我们可以在Ubuntu中正确配置OpenCV库,需要使得计算机内具有C 开发环境。其中,在Ubuntu中,我们可以基于命令行方便…