事件类型
UI事件
load:当页面完全加载后在window上面触发,当所有框架加载完成后在框架集上触发,图像加载完后在<img>上触发
unload:当页面完全卸载后在window上面触发,当所有框架。。。
abort:在用户停止下载过程时,如果嵌入的内容还没有加载完,则在<object>元素上面触发
error:当发生一些错误或者无法加载时触发
select:当用户选择文本框中的一个或多个时触发
resize:当窗口或框架的大小变化时在window或框架上面触发
scroll:当用户滚动,带滚动条的元素中的内容时,在该元素上触发
焦点事件
focus:在元素获得焦点时触发
blur:在元素失去焦点时触发
focusin:在元素获得焦点时触发,他会冒泡
focusout:在元素失去焦点时触发
鼠标与滚动事件(记得前面加on)
click:单机
dblclick:双击
mousedown:鼠标按下时触发
mouseup:鼠标松开始触发
mouseover:鼠标移入时触发
mouseout:鼠标移除时触发
mouseenter:鼠标光标从元素外部首次移动到元素范围之内时触发
mouseleave:在位于元素上方的鼠标光标移动到元素范围之外时触发
mousemove:当鼠标指针在元素内部移动时重复地触发
鼠标双击事件运行的顺序:
mousedown-----mouseuo-----click-----mouseup-----dblclick
滚轮事件
1. 客户区坐标位置
clientX、clientY:事件发生时鼠标指针在视口中的水平和垂直坐标
2. 页面坐标位置
pageX、pageY:事件发生时鼠标光标在页面中的位置。
在页面没有滚动的情况下,pageX和clientX他们的值相等。
3. 屏幕坐标位置
screenX、screenY:鼠标事件发生时鼠标指针相对于整个电脑屏幕的坐标信息
4. 鼠标滚轮事件
mousewheel事件的wheelDelta:wheelDelta是120的倍数,上滚正数,下滚负数,测试的时候,我的竟然是150.。。
5. 触摸设备ios与android
不支持dblclick事件。双击浏览器窗口会放大
轻击可单击元素会触发mousemove事件。如果此操作会导致内容变化,将不再有其他事件发生。如果屏幕没有发生变化,那么会一次进行mousedown、mouseup和click事件。
轻击不可单击元素不会发生变化。
mousemove事件也会触发mouseover和mouseout事件
两个手指放在屏幕上且页面随手指移动而滚动时会触发mousewheel和scroll事件
键盘与文本事件
keydown:当用户按下键盘上的任意键时触发,如果按住不放则重复触发
keypress:当用户按下键盘上的字符键时触发,如果按住不放则重复触发
keyup:当用户释放键盘上的按键是触发
keyCode:他是一个属性,返回ASCII码中和你按下去的字符相同的值
内存和性能
在页面中添加大量的处理程序,会使内存和性能受到影响。
解决方案——事件委托。
利用事件冒泡,只指定一个事件处理程序,管理整个页面的事件。
思路——switc case。。。。,然后判断点击的是哪个对象,像ul里,只要给ul元素添加一个onclick事件,会冒泡到所有li里面,判断对象class或者id就行。
最适合采用事件委托的事件包括click、mousedown、mouseup、keydown、keyup和keypress