js的事件种类整理

2019-05-22  本文已影响0人  阿鲁提尔
鼠标事件 (继承MouseEvent接口)
鼠标事件 描述
click 按下鼠标时触发
dblclick 双击鼠标时触发
mousedown 按下鼠标键时触发
mouseup 释放按下鼠标键触发
mousemove 鼠标在节点内部移动触发,持续移动,事件会持续触发(会有性能问题)
mouseenter 鼠标进入节点触发,进入子节点不会触发。(在节点内只会触发一次)
mouseover 鼠标进入节点触发,进入子节点会再一次触发
mouseout 鼠标离开节点触发,离开父节点也会触发
mouseleave 鼠标离开节点触发,离开父节点不会触发
contextmenu 鼠标右键(右键菜单)前触发,或按下右键菜单时触发
wheel 滚动鼠标的滚轮时触发,继承WheelEvent接口

触发顺序: mouseDown > mouseup > click > dblclick

mouseover 和 mouseenter 的共同点:鼠标进入一个节点触发

区别:

mouseout 和 mouseleave 共同点: 鼠标离开一个节点时触发
区别:

键盘事件 (继承KeyboardEvent接口)

键盘事件 描述
keydown 按下键盘时触发
keypress 按下有值的键触发,(无值键Ctrl、Alt、Shift、Meta ) ,会先出发keydown
keyup 松开键盘时触发

用户一直按键不松开:

1.keydown
2.keypress
3.keydown
4.keypress
5. ...(重复上面过程)
6.keyup

进度事件 (继承ProgressEvent接口)

描述资源加载的进度。主要由AJAX、<img>、<audio>、<video>、<style>、<link> 等外部资源的加载触发。

进度事件 描述
abort 外部资源中止加载时(比如用户取消)触发,发生错误导致中止不会触发。
error 由于错误导致外部资源无法加载时触发(error特性,不会冒泡,不会触发父元素的error时间监听函数)
load 外部资源加载成功时触发
loadstart 外部资源开始加载时触发
loadend 外部资源停止加载时触发,发生顺序在error、abort、load等事件的后面。
progress 外部资源加载过程中不断触发
timeout 加载超时时触发

注意:
按照习惯js脚本一般都放置在页面底部,有时候图片加载会在脚本运行之前就完成,因此有可能load和error事件的监听函数不会执行。
解决办法:使用complete属性先判断一下是否加载完成。

function loaded(){
  // ...
}
if(image.complete){
  loaded();
}else{
  image.addEventListener('load',loaded)
}

DOM元素节点没有提供是否加载错误的属性,所以error事件的监听函数最好放到<img>元素的HTML代码中,这样可以保证发生加载错误时百分之百会执行。

<img src="/wrong/url" onerror="this.style.display='none';"/>

loadend事件的监听函数,可以用来取代abort事件、load事件、error事件的监听函数,因为总是在这些事件之后发生。

拖拉事件 (继承DragEvent接口)

DragEvent接口又继承了MouseEvent接口和Event接口。

拖拉的对象有好几种,包括元素节点、图片、链接、选中的文字等等。
元素节点是默认不可以拖拽的,可以设置属性draggable="true"改为可拖拽
元素被拖拽时,会持续触发拖拉事件

拖拉事件 描述
drag 在拖拽节点上持续触发(间隔几百毫秒)
dragstart 开始拖拉时,在被拖拉的节点上触发
dragend 拖拉结束时,在被拖拉的节点上触发
dragenter 拖拉进入当前节点时,在当前节点上触发一次
dragover 拖拉进入当前节点时,在当前节点上持续触发(间隔几百毫秒)
dragleave 拖拉离开当前节点范围内,在当前节点上触发
drop 释放目标节点时,在目标节点上触发。
上一篇 下一篇

猜你喜欢

热点阅读