跳到主要内容

可用的基本交互事件

属性描述
abort当元素内容被取消加载时触发
blur元素失去焦点时触发
canplay当元素进行回放时触发,但还是会要求缓冲
canplaythrough当能够进行不间断回放时触发,即不要求缓冲就可以播放完
change当元素的值发生变化时触发
click当定位设备( 如鼠标指针) 在一个元素上单击时触发
contextmenu当鼠标右键单击该元素打开右键菜单时触发
dblclick当定位设备(如鼠标指针)在一个元素上双击时触发
drag当元素被拖曳时触发
dragend当元素从拖曳状态结束时,即释放时被触发
dragenter当另一个被拖曳的元素进入当前元素时被触发
dragleave当另一个被拖曳的元素离开当前元素时被触发
dragover当另一个被拖曳的元素经过当前元素时(位于元素上)被触发
dragstart当一个对象被放置到当前元素时触发
drop当元素从拖曳状态结束时,即释放时被触发
durationchange当 duration 属性发生改变时触发
emptied当 media 元素恢复到初始状态时触发
ended当播放到结尾时触发
error当与此元素相关联的对象有错误发生时触发
focus当元素获取焦点时触发
formChange当表单改变时触发
formInput当表单获得用户输入时触发
input当元素获得用户输入时触发
invalid当元素无效时触发
keydown当元素处于焦点状态下按某个键盘键时触发
keypress当元素处于焦点状态下按某个键盘键并释放时触发
keyup当元素处于焦点状态下释放某个按着的键盘键时触发
load在元素的内容完成加载后触发
loadeddata当元素失去鼠标指针捕捉时触发
loadedmetadata当 media 元素的 duration 属性和元素加载完成时触发,此时可以读取这些数据
loadstart当开始查找要加载的 media 数据时触发
mousedown当元素处于焦点状态下在其上单击鼠标时触发
mousemove当鼠标指针在该元素上移动时触发
mouseout当鼠标指针离开该元素时触发
mouseover当鼠标指针进入该元素时触发
mouseup当元素处于焦点状态下在其上释放鼠标按键时触发
mousewheel当元素处于焦点状态下在其上滚动鼠标滚轮时触发
pause当视频或音频中止播放时触发
play当调用 play ()方法开始播放时触发
playing当视频或音频正在播放时触发
progress当 media 数据的播放速率改变时触发
ratechange当浏览器正在从服务器接收数据时触发
readystatechange当元素的准备状态发生变化时触发
reset当表单被重置时触发
scroll当用户滚动该元素内容时触发
seeked当 media 元素的 seeking 属性不再为真且定位已结束时触发
seeking当 media 元素的 seeking 属性为真且定位已开始时触发
select当元素被选定时触发
show当 menu 元素被显示为上下文菜单时触发
stalled当取回 media 数据过程中(延迟)存在错误时触发
submit当数据被提交时触发
suspend当已经在获取 media 数据,但在取回整个 media 数据之前中止时触发
timeupdate当 media 改变音量或当音量被设置为静音时触发
volumechange当 media 改变其播放位置时触发
waiting当 media 已停止播放但打算继续播放时触发

JavaScript 是基于对象( object-based )的语言。它的一个最基本的特征就是采用事件驱动。它可以使在图形界面环境下的一切操作变得简单化。通常,鼠标或热键的动作称为事件( event )。由鼠标或热键引发的一连串程序动作,称为事件驱动( event driver )。而对事件进行处理的程序或函数,称为事件处理程序( event handler )。

事件处理是对象化编程的一个很重要的环节。它可以使程序的逻辑结构更加清晰,使程序更具有灵活性,提高程序的开发效率。事件处理的过程分为三步:①发生事件;②启动事件处理程序;③事件处理程序做出反应。其中,要使事件处理程序能够启动,必须通过指定的对象来调用相应的事件,然后通过该事件调用事件处理程序。事件处理程序可以是任意 JavaScript 语句,但是我们一般用特定的自定义函数来对事件进行处理。

事件的类型

绝大多数事件的命名都是描述性的,很容易理解。如 click 、 submit 、 mouseover 等,通过名称就可以猜测其含义。但也有少数事件的名称不易理解,如 blur (英文的字面意思为 "模糊 "),表示一个域或者一个表单失去焦点。通常,事件处理器的命名原则是,在事件名称前加上前缀 on 。例如,对于 click 事件,其处理器名为 onClick 。

DOM 0 级定义了以下的事件类型:

  • 鼠标事件: 可以详细分为两种:跟踪鼠标当前定位事件和跟踪鼠标单击事件
  • 键盘事件: 包括追踪键盘敲击及其上下文
  • 页面事件: 页面本身的加载或卸载
  • UI 事件: 最终用户在页面的各种行为。例如,监听用户在表单输入

再零级事件模型中, javascript 支持两种绑定事件的方式。

  • 静态绑定:在 HTML 结构中把 javascript 代码直接赋值给事件对象
  • 动态绑定:在 javascript 脚本中把事件对象直接赋值给 DOM 对象的事件属性
<form>
id="form" name="form" action="https://lmssee.cn/" method="post"
onsubmit="if(this.elements[0].value.length==0) return false;"> name:
<input type="text" name="user" id="user" />
<input type="submit" value="submit" id="btn" name="btn" />
</form>

在处理 event 事件时,应该先判断 event 在当前解析环境中的状态,如果当前浏览器支持,则使用 event ( DOM 事件模型);如果不支持,则使用 window.event 获取 event 对象。 event.srcElement 表示当前事件的源,即响应事件的当前事件,这是 IE 模型用法,但是 DOM 事件模型不支持该属性,需要使用 event 对象的 target 属性,它符合一个标准的源属性。