<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Event</title>
</head>
<body>
<div id="ev">
<style type="text/css">
#ev{
width: 300px;
height: 100px;
background: red;
color: #fff;
text-align: center;
line-height: 100px;
}
</style>
目标元素
</div>
<script type="text/javascript">
// addEventListener() 函数后面为true捕获 为false冒泡
var ev = document.getElementById('ev');
window.addEventListener('click',function(){
console.log('window captrue')
},false);
document.addEventListener('click',function(){
console.log('document captrue')
},false);
document.documentElement.addEventListener('click',function(){
console.log('html captrue')
},false);
document.body.addEventListener('click',function(){
console.log('body captrue')
},false);
ev.addEventListener('click',function(){
console.log('ev captrue')
},false)
</script>
</body>
</html>
如上列所示,为冒泡事件。可以直接复制代码运行,刷新点击可以在打印出冒泡事件的
当把函数后面的false改为true时,则为捕获事件,此时,刷新点击目标元素,答应打印顺序如下
最后就是dom的自定义事件
// 自定义事件
var eve = new Element('test');
ev.addEventListener('test',function(){
console.log('test dispatch')
})
ev.dispatchEvent(eve);