DOM事件的级别
DOM0
- DOM0级事件会在冒泡阶段被处理
var btn = document.getElementById('myBtn')
btn.onclick = function(){
//do something
//this -> btn
}
//删除
btn.onclick = null
DOM1标准中没有涉及事件相关的问题。
DOM2
- 优点:可以添加多个事件处理程序
element.addEventListener('click',function(){
})//默认冒泡阶段触发
element.addEventListener('click',function(){
},false)//冒泡阶段触发
element.addEventListener('click',function(){
},true)//捕获阶段触发
//通过以上匿名函数添加的事件点击函数,没法移除
var handler = function(){
//事件处理函数
}
//移除
element.removeEventListener('click',hanler,false)
DOM3:增加了DOM事件的类型
element.addEventListener('keyup',function(){
})
DOM事件模型
- 事件捕获
- 事件冒泡
DOM事件流
事件流描述的是页面中接受事件的顺序
- 第一阶段:事件捕获阶段
- 第二阶段:处于目标阶段
- 第三阶段:冒泡阶段
描述DOM事件捕获的具体流程
- 浏览器的实际实现中:第一个接收到事件的对象是window
- window->document->html->body->....->目标元素->....冒泡->document->window
- 获取html节点:document.documentElement
Event对象的常见应用
- event.preventDefault()
- event.stopPropagation()
- event.stopImmediatePropagation()
- event.currentTarget
- event.target
自定义事件
var eve = new Event('custome')
ev.addEventListener('custome',function(){
console.log('custome')
})
ev.dispatchEvent(eve)
- event.target返回触发事件的元素
- event.currentTarget返回绑定事件的元素