DOM事件的级别
DOM0
var btn = document.getElementById('myBtn')
btn.onClick = function(){
// do something
// this -> btn
}
//移除事件绑定
btn = null
DOM1标准制定的时候没有涉及和事件有关的东西
DOM2级事件
var btn = document.getElementById('myBtn')
//通过匿名函数添加事件处理函数
//通过匿名函数添加的事件处理函数无法移除
btn.addEventListener('click',function(){
},false)//冒泡阶段触发
btn.addEventListener('click',function(){
},true)//捕获阶段触发
//通过具名函数添加事件处理函数
var handler = function(){
//dosomething
}
btn.addEventListener('click',handler,false)
btn.removeEventListener('click',handler,false)
DOM3只是在DOM2的基础上增加了一些事件类型
- keyup等等
DOM事件流
事件流描述的是页面中接受事件的顺序
- 第一阶段:事件捕获阶段
- 第二阶段:处于目标阶段
- 第三阶段:冒泡阶段
描述DOM事件捕获的具体流程
- 浏览器的实际实现中:第一个接受到时间的对象window
- window->document->html(document.documentElement)->body(document.body)->….->目标元素->….冒泡->document->window
- 获取html节点:document.documentElement
Event对象的常见应用
- event.preventDefalut() //阻止默认行为
- event.preventPropagation() //阻止事件冒泡
- event.stopImmediatePropagation() 如果一个DOM节点上注册了两个响应事件A B 在A中加入event.stopImmediatePropagation()就会阻止B的执行
- event.currentTarget //当前绑定事件的元素
- event.target //当前被点击的元素
自定义事件
var eve = new Event('custome')
btn.addEventListener('custome',function(){
})
btn.dispatchEvent(eve)