根据触发事件的事件和事件发生的对象,可将浏览器中发生的事件分成几个类型。DOM标准定义了以下几组事件:
鼠标事件:用户使用鼠标进行特定操作时触发;
键盘事件:用户在键盘上敲击、输入时触发;
HTML事件:窗口发生变动或者发生特定的客户端-服务器端交互时触发;
突变事件:底层的DOM结构发生改变时触发。
(一) 鼠标事件
鼠标事件是Web最常用的事件类型。其中包含以下事件:
click——用户点击鼠标左键时发生(如果右键也按下则不会发生)。当用户的焦点在按钮上,并按了回车键,同样会触发这个事件。
dblclick——用户双击鼠标左键时发生(如果右键也按下则不会发生)。
mousedown——用户点击任意一个鼠标按钮时发生。
mouseout——鼠标指针在某个元素上,且用户正要将其移出元素的边界时发生。
mouseup——用户松开任意一个按钮时发生。
mousemove——鼠标在某个元素上时持续发生。
页面上的所有元素都支持鼠标事件。
1、 事件的属性
每个鼠标事件都会给以下event对象的属性填入值:
坐标属性(例如clientX和clientY等);
type属性;
target(DOM)或srcElement(IE)属性;
shiftKey、ctrlKey、altKey、metaKey(DOM)属性;
button属性(只在mousedown、mouseover、mouseout、mousemove、mouseup事件中,对于mouseover和mouseout事件,事件对象还有额外的属性。在IE中,formElement属性包含鼠标指针来自的元素,同时toElement包含鼠标指针去往的元素。对于mouseover事件,toElement总是等于srcElement,而对于mouseout事件,formELement总是等于srcElement)。
因为这种冗余,所以DOM对mouseover和mouseout只支持一个event属性relatedTarget。
在mouseover事件中,relatedTarget指出鼠标指针来自何处。在mouseout事件中,relatedTarget指出鼠标指针去往何方。
2、 顺序
click事件触发前,会先发生mousedown事件,然后发生mouseup事件。类似地,要触发dblclick事件,在同一个目标上要按顺序发生以下事件:
(1) mousedown;
(2) mouseup;
(3) click;
(4) mousedown;
(5) mouseup;
(6) click;
(7) dblclick。
移动鼠标从一个对象进入另一个对象时,先发生的事件是mouseout(发生在鼠标移出的那个对象),接着,在这两个对象都触发mousemove事件。最后,在鼠标进入的那个对象上触发mouseover事件。
(二) 键盘事件
键盘事件由用户对键盘的动作引发。有以下键盘事件:
keydown——用户在键盘上按下某按键时发生。一直按着某按键,它则会不断触发(浏览器除外)。
keypress——用户按下一个按键,并产生一个字符时发生(也就是不管类似shift、alt之类的键)。一直按下按键时,它则会持续发生。
keyup——用户释放按着的按键时发生。
1、 事件的属性
对每个键盘事件,会填入以下的事件属性:
keyCode属性;
charCode属性(仅DOM);
target(DOM)或者srcElement(IE)属性;
shiftKey、ctrlKey、altKey和metaKey(DOM)属性。
注意:按下shift、ctrl、alt或者meta键时,除设置对应的属性为true外,还都会引发keydown事件。
2、 顺序
用户按一次某字符按键时,会按以下顺序发生事件:
(1) keydown;
(2) keypress;
(3) keyup;
如果用户按一次某非字符键(例如shift),会按以下顺序发生事件:
(1) keydown;
(2) keyup。
如果用户按下一个字符按键且不放,keydown和keypress事件将逐个持续触发,直到松开按键;如果用户按下非字符按键且不放,将只有keydown事件持续触发。
(三) HTML事件
load事件——页面完全载入后,在window对象上触发;所有的框架都载入后,在框架集上触发;<img/>完全载入后,在其上触发;或者 对于<object/>元素,当其完全载入后在其上触发。
unload事件——页面完全卸载后,在window对象上触发;所有的框架都卸载后,在框
架集上触发;<img/>完全卸载后,在其上触发;或者 对于<object/>元素,当其完全卸载后在其上触发。
abort事件——用户停止下载过程时,如果<object/>对象还未完全载入,就在其上触发。
error事件——JavaScript脚本出错时,在window对象上触发;某个<img/>的指定图像无法载入时,在其上触发;或<object/>元素无法载入时触发;或者框架集中的一个或多个框架无法载入时触发。
select事件——用户选择了文本框中的一个或多个字符时触发。
change事件——文本框失去焦点时并且在它获取焦点后内容发生过改变时触发;某个<select/>元素的值发生改变时触发。
submit事件——点击提交按钮时,在<form/>上触发。
reset事件——点击重置按钮时,在<form/>上触发。
resize事件——窗口或者框架的大小发生改变时触发。
scroll事件——用户在任何带滚动条的元素上卷动它时触发。<body/>元素包含载入页面的滚动条。 scrollLeft,它保存窗口在水平向上卷动的距离,scrollTop,它保存窗口在垂直方向上卷动的距离。
focus事件——任何元素或者窗口本身获取焦点(用户点击它、Tab键切换到它或者任何其他与它交互的手段)触发。
blur事件——任何元素或者窗口本身失去焦点时触发。