事件
【事件类型】
不同的事件类型具有不同的信息。
【UI事件】
指的是那些不一定与用户操作有关的事件。当用户与页面上的元素交互时触发。
load事件:当页面完全加载后,就会 触发window 上面的load事。
unload事件:这个事件在文档被完全卸载后触发。利用这个事件最多的情况是清除引用。
resize事件:当浏览器窗口被调整到一个新的高度或宽度时,就会触发resize事件。浏览器窗口最大化或者最小化时也会触发resize事件。
scroll事件:是在window对象上发生的,但是它实际表示的则是页面相应元素的变化。scroll事件也会在文档被滚动期间重复被触发。
【焦点事件】
在页面元素获得或者失去焦点时触发。利用这些事件并与document.hasFocus()方法及document.activeElement属性配合,可以知晓用户在页面上的行踪。
【鼠标与滚轮事件】
click:单击主鼠标时触发;
dblclick:双击主鼠标时触发;
mousedown:按下任意鼠标按钮时触发;
mouseenter:鼠标光标从元素外部首次移动到元素范围之内时触发;
mouseleave:在位于元素上方的鼠标光标移动到元素范围之外时触发;
mousemove:当鼠标指针在元素内部移动时重复地触发;
mouseout:在鼠标指针位于一个元素上方,然后用户将其移入另一个元素时触发;
mouseover:在鼠标指针位于一个元素外部,然后用户将其首次移入另一个元素边界之内时触发;
mouseup:释放鼠标按钮时触发。
【键盘与文本事件】
对键盘事件的支持主要遵循的是DOM0级。
keydown:按下键盘任意键时触发,而且如果按住不放的话,会重复触发此事件。
keypress:按下键盘上的字符键时触发,而且如果按住不放的话,会重复触发此事件。按下Esc键也会触发此事件。
keyup:释放键盘上的键时触发。
文本事件:textInput。这个事件是对keypress的补充,用意是在将文本显示给用户之前更容易拦截文本。在文本插入文本框之前会触发textInput事件。
【复合事件】
复合事件,用于处理IME的输入序列。IME(输入法编辑器)可以让用户输入在物理键盘上找不到的字符。通常需要按住多个键,但最终只输出一个字符。
compositionstart:在IME的文本复合系统打开时触发,表示要开始输入了;
compositionupdate:在向输入字段中插入新字符时触发。
compositionend:在IME的文本复合系统关闭时触发,表示返回正常键盘输入状态。
【变动事件】
DOM2级的变动事件能在DOM中的某一部分发生变化时给出提示。
删除节点:使用removeChild()和replaceChild()从DOM中删除节点。
插入节点:使用appendChild()、replaceChild()或insertBefore()方法向DOM中插入节点。
【HTML5事件】
HTML5详尽列出了浏览器应该支持的所有文件。
contextmenu事件:冒泡;用以表达何时应该显示上下文菜单,以便开发人员取消默认的上下文菜单而提供自定义的菜单。
beforeunload事件:让开发人员有可能在页面卸载前组织这一操作。将控制权交给用户。
DOMContentLoaded事件:支持在页面下载的早起添加事件处理程序。用户能够尽早地与页面进行交互。
readystatechane事件:其目的是提供与文档或元素加载状态有关的信息,支持readystatechane事件的每个对象都有一个readyState属性。包括uninitialized(未初始化),loading(正在加载),loaded(加载完毕),interactive(交互),complete(完成)这五个值。
【内存和性能】
事件委托:对“事件处理程序过多”问题的解决方案。利用了事件冒泡,只指定一个事件处理程序,就可以管理某一类型所有事件。
移除事件处理程序:
空事件处理程序:一种情况就是从文档中移除带有事件处理程序的元素。另一种是在卸载页面的时候。
【事件模拟】
模拟触发事件。有模拟鼠标事件、模拟键盘事件。IE有它自己的模拟事件的方式。