DOM事件小计
基本概念:DOM事件的级别
DOM0: element.onclick = function(){}
DOM2: element.addEventListener('click',function(){},false)
DOM3: element.addEventListener('keyup',function(){},false)
DOM事件模型
- 捕获
- 冒泡
DOM事件流
- 捕获 === > 目标阶段 ===> 冒泡
描述DOM事件捕获的具体流程
捕获具体流程(冒泡反之)
- window ===> document ===> html ===> body ===> ...目标元素
演示捕获流程:
//body中新建一个id为ev的div,宽高背景自己设置下
var ev = document.getElementById('ev')
window.addEventListener('click',function(){
console.log('window captrue');
},true)//true为捕获阶段触发,false为冒泡阶段触发
document.addEventListener('click',function(){
console.log('document captrue');
},true)
document.documentElement.addEventListener('click',function(){
console.log('html captrue');
},true)
document.body.addEventListener('click',function(){
console.log('body captrue');
},true)
ev.addEventListener('click',function(){
console.log('ev captrue');
},true)
// 点击id为ev的div,查看控制台打印如下
window captrue
document captrue
html captrue
body captrue
ev captrue
// 打印顺序与注册顺序无关
Event对象的常见应用
- event.preventDefault() 阻止默认事件
- event.stopPropagation() 阻止冒泡
- event.stopImmediatePropagation() 事件响应优先级
- event.currentTarget 指向引起触发事件的元素
- event.target 事件绑定的元素
自定义事件(模拟事件)
var eve = new Event('custome');
element.addEventListener('custome',function(){
console.log('custome');
});
element.dispatchEvent(eve);
// 注意是事件对象eve而不是事件名custome
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。