首页 > 编程语言 >JavaScript事件流

JavaScript事件流

时间:2024-04-01 15:58:59浏览次数:22  
标签:冒泡 JavaScript click 阶段 document event 事件

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对象的冒泡阶段也添加了一个事件监听器,但它不会被触发。

标签:冒泡,JavaScript,click,阶段,document,event,事件
From: https://blog.csdn.net/z13903931414/article/details/137236282

相关文章

  • 身份证实名认证接口会返回什么?javascript身份核验接口示例
    身份证实名认证接口是通过核验身份证号、姓名、证件头像等一系列的要素信息进行用户身份验证,那么,身份证实名认证接口一般在核验完成后会返回什么参数信息呢?下面翔云API小编为大家答疑解惑!一般情况下,身份核验只会返回一致或者不一致的结果,不一致的情况下会返回那些参数不一致,以翔......
  • JavaScript基础篇3【数组】
    今日学习内容什么是数组简单理解就是用于临时存储同类数据,本质上是一种具有顺序的特殊对象【当然其实是可以存储不同的数据类型的,只是说那样做很少,所以一般就如前一样理解】数组的定义JavaScript中有两种定义数组的方式:实例化Array对象【称之为“完整形式”】vararr......
  • 七、使用jsPlumb实现流程图功能--Connection事件和拦截器
    在一个交互式的流程图配置中,连线可能是最高频的操作。jsPlumb也提供了相对应的事件和拦截器可以让开发人员做一些符合需求的功能。一、Connection事件Connection事件是在行为发生之后的一个通知,Connection常用的一些事件有:EVENT_CONNECTION:连线创建之后触发的事件。EVENT_CON......
  • JavaScript高级 —— 学习(二)
    目录一、深入对象(一)创建对象三种方式1.利用对象字面量创建2.利用newObject()创建3.利用构造函数创建(二)利用构造函数创建对象1.构造函数介绍2.约定3.实例化执行过程(三)实例成员&静态成员1.实例成员说明:2.静态成员说明:(四)内置构造函数1.包装类型:String:lengt......
  • 【Web应用技术基础】JavaScript(1)——案例:猜数字
    因为不能插入视频,所以给大家一张一张截图的点击“重新开始一局游戏” <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0">......
  • 前端应用开发实验:事件处理
    目录实验目的相关知识点实验内容购物车功能的拓展代码实现效果实验目的(1)熟练掌握v-on指令的用法,学会使用v-on指令监听DOM元素的事件,并通过该事件触发调用事件处理程序。(2)掌握v-on指令修饰符的基本用法。相关知识点(1)事件监听:使用v-on指令、事件处理方法......
  • (day 24)JavaScript学习笔记(异常的处理)
    概述         这是我的学习笔记,记录了JavaScript的学习过程。在写博客的时候我会尽量详尽的记录每个知识点。如果你完全没接触过JavaScript,那么这一系列的学习笔记可能会对你有所帮助。    今天学习异常的处理,主要是捕获异常、throw关键字主动抛异常、Error......
  • JavaScript笔记 09
    目录01DOM操作事件的体验02获取元素对象的五种方式03事件中this指向问题04循环绑定事件05DOM节点对象的常用操作  06点亮盒子的案例07节点访问关系08设置和获取节点内容的属性09以上内容的小总结 01DOM操作事件的体验        js本身是受......
  • 【JavaScript系列】-- 对象
    今天我们将探讨JavaScript中的一个强大工具—-对象。对象就像生活中的各种工具,帮助你更好地组织和管理信息。在实际开发中,可以使用对象来表示用户信息、处理表单数据等。01、什么是对象JavaScript对象是一种包含属性和方法的数据类型,可视为一个多功能盒子,用于存放各种数据。在......
  • yii2事件
    yii2事件事件可以将自定义代码“注入”到现有代码中的特定执行点。1yii\base\Event封装了与时间相关的有关数据并提供了一些功能函数作为辅助classEventextendsObject{public$name;//事件名public$sender;//事件发布者,通常是......