<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<style>
body,html,.container{
height: 100%;
padding:0;
margin: 0;
}
div
{
background-color: coral;
border: 1px solid;
padding: 50px;
margin-bottom: 20px;
width: 300px;
}
</style>
<body>
<p>该实例演示了在添加事件监听时冒泡与捕获阶段的不同。</p>
<div id="myDiv">
<p id="myP">点击该段落, 我是冒泡</p>
</div>
<div id="myDiv2">
<p id="myP2">点击该段落, 我是捕获</p>
</div>
</body>
<script >
var myP = document.getElementById('myP');
var myP = document.getElementById('myP');
var myDiv = document.getElementById('myDiv');
var myDiv2 = document.getElementById('myDiv2');
// true是在捕获阶段,false是在冒泡阶段,没写默认为冒泡 // 冒泡是先内后外,捕获是先外后内
myP.addEventListener('click',() => {
console.log('冒泡 子元素');
});
myDiv.addEventListener('click',() => {
console.log('冒泡 父元素');
});
// 子元素 父元素
myP2.addEventListener('click',() =>{
console.log('捕获 子元素');
},true);
myDiv2.addEventListener('click',() =>{
console.log('捕获 父元素');
},true);
// 父元素 子元素
//如果浏览器不支持 addEventListener() 方法, 你可以使用 attachEvent() 方法替代。
//以下实例演示了跨浏览器的解决方法:
var x = document.getElementById("myBtn");
if (x.addEventListener) { //所有主流浏览器,除了 IE 8 及更早 IE版本
x.addEventListener("click", myFunction);
} else if (x.attachEvent) { // IE 8 及更早 IE 版本
x.attachEvent("onclick", myFunction);
}
</script>
</html>