事件
文档与浏览器窗口中发生的一些特定的交互瞬间。
事件冒泡
事件流:从页面中接收事件的顺序
IE的事件流叫做事件冒泡。事件从文档中嵌套层次最深的那个节点开始接收,逐渐向上传播到较为不具体的节点。
事件捕获
与事件冒泡相反。从最不具体的节点开始到最深处节点。
事件处理程序
HTML事件处理
<input type="text" onclick="test()" />
DOM0级事件处理程序
var btn = document.getElementById("test");
btn.onclick = function){
};
DOM2级事件处理程序
var btn = document.getElementById("test");
btn.addEventListener("click",test);
btn.removeEventListener("click",test);
addEventListener()
removeEventListener
都接受3个参数,要处理的事件名,作为事件处理程序的函数和一个布尔值。如果是true,表示在捕获阶段调用。否则表示在冒泡阶段调用。
IE事件处理
attachEvent()
detachEvent()
事件委托
利用事件冒泡,只指定一个时间处理程序,就可以管理某一类型的所有事件。
模拟事件
在document对象上使用createEvent()创建event.这个函数接收一个字符串参数。然后使用dispatchEvent()方法触发事件。
模拟鼠标事件
var btn = document.getElementById("myBtn");
//创建事件对象
var event = document.createEvent("MouseEvents");
//初始化事件对象
event.initMouseEvent("click",true,true,document.defaultView,0,0,0,0,0,false,false,false,false,0,null);
//触发事件
btn.dispatchEvent(event);
模拟键盘事件
var textbox = document.getElementById("mytextbox");
//以DOM3级方式创建事件对象
if(document.implementation.hasFeature("KeyboardEvents","3.0")){
event = document.createEvent("KeyboardEvent");
//初始化事件对象
event.initKeyboardEvent("keydown",true,true,document.defaultView,"a",0,"shift",0);
}
//触发事件
textbox.dispatchEvent(event);