默认只在冒泡阶段触发:outer<body<document<window
html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
#outer{
width: 300px;
height: 300px;
background: yellow;
overflow: hidden;
}
#center{
width: 200px;
height: 200px;
margin: 20px;
background: blue;
overflow: hidden;
}
#inner{
width: 100px;
height: 100px;
margin: 20px;
background: red;
}
</style>
</head>
<body>
<div id="outer">
<div id="center">
<div id="inner"></div>
</div>
</div>
<script>
inner.onclick = function(){
console.log("inner")
}
center.onclick = function(){
console.log("center")
}
outer.onclick = function(){
console.log("outer")
}
document.body.onclick = function(){
console.log("document.body")
}
document.documentElement.onclick = function(){
console.log("document.documentElement")
}
document.onclick = function(){
console.log("document")
}
window.onclick = function(){
console.log("window")
}
// 标准的dom事件流
// 捕获:window<document<body<outer
// 目标:inner
// 冒泡:outer<body<document<window
// 默认情况,只在冒泡下触发
</script>
</body>
</html>
如果想全触发需要单独配置,默认参数是false,改成true即可
用的很少
html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
#outer{
width: 300px;
height: 300px;
background: yellow;
overflow: hidden;
}
#center{
width: 200px;
height: 200px;
margin: 20px;
background: blue;
overflow: hidden;
}
#inner{
width: 100px;
height: 100px;
margin: 20px;
background: red;
}
</style>
</head>
<body>
<div id="outer">
<div id="center">
<div id="inner"></div>
</div>
</div>
<script>
// 标准的dom事件流
// 捕获:window<document<body<outer
// 目标:inner
// 冒泡:outer<body<document<window
// 默认情况,只在冒泡下触发
inner.addEventListener("click",function(){
console.log("inner")
})
center.addEventListener("click",function(){
console.log("center")
})
outer.addEventListener("click",function(){
console.log("outer")
})
document.body.addEventListener("click",function(){
console.log("document.body")
})
document.documentElement.addEventListener("click",function(){
console.log("document.documentElement")
})
window.addEventListener("click",function(){
console.log("window")
})
// 默认false,改成true 用的很少
inner.addEventListener("click",function(){
console.log("inner-捕获")
},true)
center.addEventListener("click",function(){
console.log("center-捕获")
},true)
outer.addEventListener("click",function(){
console.log("outer-捕获")
},true)
document.body.addEventListener("click",function(){
console.log("document.body-捕获")
},true)
document.documentElement.addEventListener("click",function(){
console.log("document.documentElement-捕获")
},true)
window.addEventListener("click",function(){
console.log("window-捕获")
},true)
</script>
</body>
</html>