高级事件方法

106 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第9天,点击查看活动详情

1 注册事件(绑定事件)

给元素添加事件,称为注册事件(绑定事件)
注册事件有两种方式
1. 传统注册方式
●利用 on 开头的事件(onclick)

<button onclick=“alert('hello~')”></button> 或 btn.onclick = function() { } 

●特点: 注册事件的唯一性
●同一个元素同一个事件只能设置一个处理函数,最后注册的处理函数将会覆盖前面注册的处理函数

2. 方法监听注册方式

●w3c 标准推荐方式 addEventListener()
●IE9 之前的 IE 不支持此方法,可使用 attachEvent() 代替
●特点:同一个元素同一个事件可以注册多个监听器
●按注册顺序依次执行

2 删除事件(解绑事件)

1. 传统注册方式

eventTarget.onclick = null;

2. 方法监听注册方式

eventTarget.removeEventListener(type, listener[, useCapture]);  
eventTarget.detachEvent(eventNameWithOn, callback); 

删除事件兼容性解决方案

3 DOM 事件流

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

1捕获阶段
2当前目标阶段
3冒泡阶段

比如我们给一个div 注册了点击事件

冒泡阶段

ELEMENT HTML

捕获阶段

ELEMENT BODY

当前目标阶段 ELEMENT DIV

鼠标事件 触发条件 鼠标点击左键触发 ONCLICK

鼠标经过触发

ONMOUSEOVER

鼠标离开触发

ONMOUSEOUT

获得鼠标焦点触发

ONFOCUS

失去鼠标焦点触发

ONBLUR

鼠标移动触发

ONMOUSEMOVE

鼠标弹起触发

ONMOUSEUP

鼠标按下触发

ONMOUSEDOWN

image.png

常用鼠标事件对象

event对象代表事件的状态,跟事件相关的一系列信息的集合。现阶段我们主要是用鼠标事件对象 MouseEvent和键盘事件对象 KeyboardEvent。

image.png

常用的键盘事件

事件除了使用鼠标触发,还可以使用键盘触发。 image.png

注意

●使用 addEventListener 不需要加 on
●onkeypress 和前面2个的区别是,它不识别功能键,比如左右箭头,shift 等。
●三个事件的执行顺序是: keydown --> keypress ---> keyup
●onkeydown 和 onkeyup 不区分字母大小写,onkeypress 区分字母大小写。
在我们实际开发中,我们更多的使用 keydown 和 keyup, 它能识别所有的键(包括功能键)

键盘事件对象中的 keyCode 属性可以得到相应键的ASCII码值

image.png