JavaScript事件流

简介: JavaScript事件流

JavaScript的事件流主要包括三个阶段:捕获阶段、目标阶段和冒泡阶段。当一个事件发生时,如点击一个按钮,这个事件会从最外层的祖先元素(通常是window对象)开始向下传递,这是捕获阶段。当事件到达触发事件的目标元素时,进入目标阶段。然后,事件会从目标元素开始,向上冒泡到最外层的祖先元素,这是冒泡阶段。

下面是一个演示JavaScript事件流的简单实例:

html<!DOCTYPE html>
<html>
<head>
<title>JavaScript 事件流示例</title>
<style>
#outer {
width: 300px;
height: 300px;
background-color: lightblue;
}
#middle {
width: 200px;
height: 200px;
background-color: lightgreen;
margin: 50px;
}
#inner {
width: 100px;
height: 100px;
background-color: lightyellow;
margin: 50px;
}
</style>
</head>
<body>
<div id="outer">
<div id="middle">
<div id="inner">点击我</div>
</div>
</div>
<script>
var outerDiv = document.getElementById('outer');
var middleDiv = document.getElementById('middle');
var innerDiv = document.getElementById('inner');
// 在捕获阶段添加事件监听器
document.addEventListener('click', function(event) {
event.stopPropagation(); // 阻止事件冒泡
console.log('捕获阶段:document');
}, true); // 第三个参数为true表示在捕获阶段添加事件监听器
outerDiv.addEventListener('click', function(event) {
console.log('捕获阶段:outerDiv');
}, true);
middleDiv.addEventListener('click', function(event) {
console.log('捕获阶段:middleDiv');
}, true);
innerDiv.addEventListener('click', function(event) {
console.log('目标阶段:innerDiv');
});
middleDiv.addEventListener('click', function(event) {
console.log('冒泡阶段:middleDiv');
});
outerDiv.addEventListener('click', function(event) {
console.log('冒泡阶段:outerDiv');
});
document.addEventListener('click', function(event) {
console.log('冒泡阶段:document');
});
</script>
</body>
</html>

这个示例中,有三个嵌套的div元素,分别命名为outerDivmiddleDivinnerDiv。我们在这些元素以及document对象上添加了点击事件的监听器,并指定了事件是在捕获阶段还是冒泡阶段触发。当你点击"点击我"这个文本时,控制台将输出事件流的顺序。

注意,在document对象的捕获阶段事件监听器中,我们调用了event.stopPropagation()方法来阻止事件冒泡。因此,尽管我们在document对象的冒泡阶段也添加了一个事件监听器,但它不会被触发。

相关文章
|
2月前
|
JavaScript 前端开发
JavaScript 事件流
JavaScript 事件流
26 1
|
3月前
|
JavaScript
js 事件流、事件冒泡、事件捕获、阻止事件的传播
js 事件流、事件冒泡、事件捕获、阻止事件的传播
41 1
|
Web App开发 JavaScript 前端开发
JavaScript的事件流1
JavaScript的事件流
67 0
|
5月前
|
JavaScript 前端开发 API
探索JavaScript事件流:DOM中的神奇旅程
JavaScript中的事件流是一种机制,用于描述和处理事件在DOM树中的传播过程。了解事件流的属性和工作原理对于编写高效的事件处理代码和实现复杂的交互功能至关重要。本文将详细介绍JavaScript事件流的发展流程、属性以及应用场景,并提供一些代码示例和引用资料,帮助读者深入理解并应用这一重要的前端技术。
|
11月前
|
JavaScript 前端开发
JavaScript 事件流
JavaScript 事件流
32 0
|
12月前
|
前端开发 JavaScript 开发者
带你读《现代Javascript高级教程》八、JavaScript事件流:深入理解事件处理和传播机制(1)
带你读《现代Javascript高级教程》八、JavaScript事件流:深入理解事件处理和传播机制(1)
|
12月前
|
前端开发 JavaScript
带你读《现代Javascript高级教程》八、JavaScript事件流:深入理解事件处理和传播机制(2)
带你读《现代Javascript高级教程》八、JavaScript事件流:深入理解事件处理和传播机制(2)
|
12月前
|
JavaScript 前端开发
带你读《现代Javascript高级教程》八、JavaScript事件流:深入理解事件处理和传播机制(3)
带你读《现代Javascript高级教程》八、JavaScript事件流:深入理解事件处理和传播机制(3)
|
JavaScript 前端开发 C++
JavaScript事件委托与事件流+牛客例题
JavaScript事件委托与事件流+牛客例题
51 0
|
JavaScript
js中 事件流与阻止冒泡 事件对象.stopPropagation()
js中 事件流与阻止冒泡 事件对象.stopPropagation()