常用事件类型
文档
- https://www.w3cschool.cn/javascript_guide/javascript_guide-nzpy269s.html
- https://developer.mozilla.org/zh-CN/docs/Web/Events
键盘事件
键盘事件由用户击打键盘触发,主要有keydown、keypress、keyup三个事件,它们都继承了KeyboardEvent接口。
- keydown:按下键盘时触发。
- keypress:按下有值的键时触发,即按下 Ctrl、Alt、Shift、Meta 这样无值的键,这个事件不会触发。对于有值的键,按下时先触发keydown事件,再触发这个事件。
- keyup:松开键盘时触发该事件。
如果用户一直按键不松开,就会连续触发键盘事件,触发的顺序如下。
keydown
keypress
keydown
keypress
...(重复以上过程)
keyup
鼠标与滚轮事件
- click:在用户单击主鼠标按钮(一般是左边的按钮)或者按下回车键时触发。
- dblclick:在用户双击主鼠标按钮(一般是左边的按钮)时触发。
- mousedown:在用户按下了任意鼠标按钮时触发。不能通过键盘触发这个事件。
- mouseenter:在鼠标光标从元素外部首次移动到元素范围之内时触发。这个事件不冒泡,而且在光标移动到后代元素上不会触发。
- mouseleave:在位于元素上方的鼠标光标移动到元素范围之外时触发。这个事件不冒泡,而且在光标移动到后代元素上不会触发。
- mousemove:当鼠标指针在元素内部移动时重复地触发。不能通过键盘触发这个事件。
- mouseout:在鼠标指针位于一个元素上方,然后用户将其移入另一个元素时触发。
- mouseover:在鼠标指针位于一个元素外部,然后用户将其首次移入另一个元素边界之内时触发。不能通过键盘触发这个事件。
- mouseup:在用户释放鼠标按钮时触发。不能通过键盘触发这个事件。
触发顺序: mouseDown > mouseup > click > dblclick
screenX,设置鼠标相对于屏幕的水平坐标(但不会移动鼠标),默认为0,等同于MouseEvent.screenX属性。
screenY,设置鼠标相对于屏幕的垂直坐标,默认为0,等同于MouseEvent.screenY属性。
clientX,设置鼠标相对于窗口的水平坐标,默认为0,等同于MouseEvent.clientX属性。
clientY,设置鼠标相对于窗口的垂直坐标,默认为0,等同于MouseEvent.clientY属性。
event.pageX 是目标点距离document最左上角的X轴坐标
event.pageY 是目标点距离document最左上角的Y轴坐标
触摸与手势事件
- touchstart 当手指触摸屏幕时触发;即使已经有一个手指放在了屏幕上也会触发。
- touchmove 当手指在屏幕上滑动时连续地触发。在这个事件发生期间,调用preventDefault()可以阻止滚动。
- touchend 当手指从屏幕上移开时触发。
- touchcancel 当系统停止跟踪触摸时触发。
每个触摸事件的event对象都提供了在鼠标事件中常见的属性:bubbles、cancelable、view、clientX、clientY、screenX、screenY、detail、altKey、shiftKey、ctrlKey 和metaKey。
- gesturestart 当一个手指已经按在屏幕上而另一个手指又触摸屏幕时触发。
- gesturechange 当触摸屏幕的任何一个手指的位置发生变化时触发。
- gestureend 当任何一个手指从屏幕上面移开时触发。
每个手势事件的event对象都包含着标准的鼠标事件属性:bubbles、cancelable、view、clientX、clientY、screenX、screenY、detail、altKey、shiftKey、ctrlKey和metaKey。
进度事件 (继承ProgressEvent接口)
- abort 外部资源中止加载时(比如用户取消)触发,发生错误导致中止不会触发。
- error 由于错误导致外部资源无法加载时触发(error特性,不会冒泡,不会触发父元素的error时间监听函数)
- load 外部资源加载成功时触发
- loadstart 外部资源开始加载时触发
- loadend 外部资源停止加载时触发,发生顺序在error、abort、load等事件的后面。
- progress 外部资源加载过程中不断触发
- timeout 加载超时时触发
拖拉事件 (继承DragEvent接口)
- drag 在拖拽节点上持续触发(间隔几百毫秒)
- dragstart 开始拖拉时,在被拖拉的节点上触发
- dragend 拖拉结束时,在被拖拉的节点上触发
- dragenter 拖拉进入当前节点时,在当前节点上触发一次
- dragover 拖拉进入当前节点时,在当前节点上持续触发(间隔几百毫秒)
- dragleave 拖拉离开当前节点范围内,在当前节点上触发
- drop 释放目标节点时,在目标节点上触发。
页面相关事件 描述
- onAbort 图片在下载时被用户中断
- onBeforeUnload 当前页面的内容将要被改变时触发的事件
- onError 捕抓当前页面因为某种原因而出现的错误,如脚本错误与外部数据引用的错误
- onLoad 页面内空完成传送到浏览器时触发的事件,包括外部文件引入完成
- onMove 浏览器的窗口被移动时触发的事件
- onResize 当浏览器的窗口大小被改变时触发的事件
- onScroll 浏览器的滚动条位置发生变化时触发的事件
- onStop 浏览器的停止按钮被按下时触发的事件或者正在下载的文件被中断
- onUnload 当前页面将被改变时触发的事件
表单相关事件 描述
- onBlur 当前元素失去焦点时触发的事件 [鼠标与键盘的触发均可]
- onChange 当前元素失去焦点并且元素的内容发生改变而触发的事件 [鼠标与键盘的触发均可]
- onFocus 当某个元素获得焦点时触发的事件
- onReset 当表单中RESET的属性被激发时触发的事件
- onSubmit 一个表单被递交时触发的事件