事件捕获机制和冒泡机制你了解多少?
1. 基本概念
- 捕获:自顶向下
- 冒泡:自底向上
2. window.addEventListener 监听的是什么阶段的事件
// 冒泡阶段
window.addEventListener(‘click’, () => {
})
// 捕获阶段
window.addEventListener(‘click’, () => {
}, true)
3. 平常有哪些场景用到了这个机制?
事件委托
4. 一个历史页面,上面有若干按钮的点击逻辑,每个按钮都有自己的 click 事件。
新需求来了:给每一个访问的用户添加一个属性, banned = true, 此用户点击页面上的俺妞妞或者元素,都不可响应原来的函数。
而是直接 alert 提示,你被封禁了。
window.addEventListener('click', () => {
if(banned === true) {
e.stopProgagtion();
}
}, 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>
#parent {
background-color: antiquewhite;
padding: 50px;
}
#child {
background-color: brown;
padding: 50px;
}
#son {
background-color: chartreuse;
padding: 50px;
}
</style>
</head>
<body>
<div id="parent">
<div id="child">
<div id="son"></div>
</div>
</div>
</body>
</html>
<script src="./index.js"></script>
2) js
```javaScript
const parent = document.getElementById('parent')
const child = document.getElementById('child')
const son = document.getElementById('son')
window.addEventListener('click', (e) => {
console.log('window 捕获')
}, true)
parent.addEventListener('click', (e) => {
console.log('parent 捕获')
}, true)
child.addEventListener('click', (e) => {
console.log('child 捕获')
}, true)
son.addEventListener('click', (e) => {
console.log('son 捕获')
}, true)
window.addEventListener('click', (e) => {
console.log('window 冒泡')
})
parent.addEventListener('click', (e) => {
console.log('parent 冒泡')
})
child.addEventListener('click', (e) => {
console.log('child 冒泡')
})
son.addEventListener('click', (e) => {
console.log('son 冒泡')
})
复制代码
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END