`

JavaScript中的事件传播 捕捉、发生、起泡

阅读更多
首先你要明白一点,当一个事件发生的时候,该事件总是有一个事件源,即引发这个事件的对象,一个事件不能凭空产生,这就是事件的发生。

当事件发生后,这个事件就要开始传播。为什么要传播呢?因为事件源本身并没有处理事件的能力。例如我们点击一个按钮时,就会产生一个click事件,但这个按钮本身不能处理这个事件(废话),事件必须从这个按钮传播出去,从而到达能够处理这个事件的代码中(例如我们给按钮的onclick属性赋一个函数的名字,就是让这个函数去处理该按钮的click事件)。

当事件在传播过程中,找到了一个能够处理它的函数,这时候我们就说这个函数捕捉到了这个事件。

说到这里,关键的问题来了,那就是一个函数是如何捕捉一个事件的呢?这就涉及到事件的冒泡了。

为了更好地理解冒泡的概念,我建议你现在想象一下你的面前放着一杯水,但这杯水和我们平时看到的有点点不同,它分为数层,每一层又分成一或多个区域,最顶层是我们熟悉的窗口对象(即window对象),下一层分为好几个区域(document对象、history对象等等),而document对象的下一层又分为多个子对象。

这些对象的层次关系构成了DOM中的对象树。
事件的传播是有方向的,当点击一个按钮时所产生的事件从这个按钮处开始向上传播(就像一个水泡从杯底冒上来,这就是之所以叫事件冒泡的原因),但这个事件总是寻找特定的属性是否有值。例如按钮的click事件先寻找在按钮上是否有onclick属性的有意义的定义(即该属性指向一个存在的函数或一段可执行的语句),如果有,执行这个函数或语句;然后事件继续向上传播,到达按钮的上一层对象(例如一个form对象或document对象,总之是包含了按钮的父对象),如果该对象也定义了onclick属性,则执行属性的值。

所以,如果这个按钮上面有3层(form、document、window),且这三层都定义了onclick属性,则当按钮的click事件产生时,将会调用4个(包括按钮本身的一个)函数或执行4段语句。

事件的这几个特性在0级dom中也是适用的。


<html onclick="alert('html')">
    <head>
        <title>Event Propagation Example</title>
    </head>
    <body onclick="alert('body')">
 
        <input type="button" value="Click Me" onclick="alert('input')" />
    </body>
</html>
1
0
分享到:
评论

相关推荐

    JavaScript 事件处理 事件绑定 示例代码

    事件绑定 示例代码JavaScript 事件处理 事件绑定 示例代码JavaScript 事件处理 事件绑定 示例代码JavaScript 事件处理 事件绑定 示例代码JavaScript 事件处理 事件绑定 示例代码JavaScript 事件处理 事件绑定 示例...

    JavaScript程序设计——事件处理实验报告.docx

    实验报告详细介绍了JavaScript事件处理的相关知识,这在Web开发中是非常关键的一部分,因为事件是用户与网页交互的主要方式。以下是对各个知识点的详细说明: 1. **JavaScript事件基本概念**: - **事件**:是用户...

    第6章 JavaScript中的事件与事件处理

    第6章 JavaScript中的事件与事件处理

    javascript之事件及事件响应篇

    本篇文章将深入探讨JavaScript中的事件模型、事件处理方式以及常见事件类型,旨在帮助开发者更好地理解和应用这一核心技术。 首先,事件是用户或浏览器与网页进行交互时产生的动作,比如点击按钮、滚动页面或者按下...

    JavaScript触发事件列表

    JavaScript是一种广泛应用于Web开发的编程语言,它提供了许多事件处理机制,以便开发者能够捕捉和响应用户交互操作。下面是JavaScript触发事件列表,涵盖了常见的事件类型和应用场景: 单击事件(OnClick) 单击...

    【JavaScript源代码】JavaScript中事件冒泡机制示例详析.docx

    JavaScript中的事件冒泡机制是DOM事件处理的核心概念之一,它涉及到事件在DOM树中的传播方式。事件流主要有三种阶段:事件捕获阶段、处于目标阶段和事件冒泡阶段。 事件捕获阶段是从DOM树的根节点开始,沿着树向下...

    JavaScript程序设计课件:第 5 章 事件和事件处理.ppt

    事件是指在用户与计算机交互过程中发生的动作或操作,例如鼠标单击、键盘输入、窗口加载等。事件处理器是指对事件的响应和处理,例如在鼠标单击按钮时弹出警示框。 理解事件 事件是指在日常生活和计算机交互过程中...

    JavaScript事件学习小结(一)事件流

    标题中的"JavaScript事件学习小结(一)事件流"指的是JavaScript中的事件处理机制,特别是事件流的概念。事件流描述了在DOM(文档对象模型)中事件如何从根节点传播到具体的元素节点。在JavaScript中,事件是用户与...

    JavaScript 事件处理 二级菜单级联 示例代码

    JavaScript 事件处理 二级菜单级联 示例代码JavaScript 事件处理 二级菜单级联 示例代码JavaScript 事件处理 二级菜单级联 示例代码JavaScript 事件处理 二级菜单级联 示例代码JavaScript 事件处理 二级菜单级联 ...

    javascript中的宠物石

    总的来说,"javascript中的宠物石"项目涵盖了JavaScript的基础语法、事件处理、异步通信、面向对象编程和动画制作等多个方面,是学习和实践JavaScript交互性开发的一个好例子。通过这个项目,初学者可以逐步提升自己...

    JavaScript之DOM事件(源代码)

    JavaScript之DOM事件(源代码)JavaScript之DOM事件(源代码)JavaScript之DOM事件(源代码)JavaScript之DOM事件(源代码)JavaScript之DOM事件(源代码)JavaScript之DOM事件(源代码)JavaScript之DOM事件(源...

    JavaScript 事件处理 下拉列表和可选项 示例代码

    JavaScript 事件处理 下拉列表和可选项 示例代码JavaScript 事件处理 下拉列表和可选项 示例代码JavaScript 事件处理 下拉列表和可选项 示例代码JavaScript 事件处理 下拉列表和可选项 示例代码JavaScript 事件处理 ...

    javaScript对象模型与事件处理借鉴.pdf

    JavaScript 事件处理是指 JavaScript 捕捉到用户在浏览器中进行的操作,并对不同的操作进行响应的机制。JavaScript 事件处理可以分为事件捕捉和事件处理两个阶段。在事件捕捉阶段,JavaScript 会捕捉到用户在浏览器...

    JavaScript捕捉事件和阻止冒泡事件实例分析

    这种事件传播的方式就像气泡从水中向上升一样,从内部元素开始,直到根元素。与冒泡相对的是事件捕捉,它是指事件从根元素开始,向下逐级传播到目标元素的过程。 知识点二:事件冒泡的影响 在事件冒泡过程中,如果...

    Javascript 事件 一览表

    JavaScript事件是Web开发中至关重要的一...总结,JavaScript事件是构建交互式网页的关键,通过理解和掌握各种事件类型、事件处理程序、事件传播机制以及兼容性问题,开发者可以创建出更加灵活、响应用户行为的Web应用。

    JavaScript自定义事件的创建与应用:深入指南

    在JavaScript中,事件是用户与网页交互的基础。除了浏览器提供的原生事件,如点击、滚动和键盘事件,开发者还可以创建自定义事件来满足特定的应用需求。自定义事件允许开发者定义事件的类型、携带的数据以及触发的...

    JAVASCRIPT事件与动态页面编程.pdf

    事件监视器告知JAVASCRIPT解释器当指定事件发生时,运行何种JAVASCRIPT代码。 使用JAVASCRIPT事件监视器需要遵循以下原则: 1. 事件监视器须作为某HTML标记(如BODY、FORM、IMG等)的一个属性名。 2. 嵌入HTML文档...

    JavaScript实现事件的中断传播和行为阻止方法示例

    在JavaScript中,事件传播有三种模式:冒泡、捕获和目标。本篇主要讨论如何中断事件传播以及阻止事件的默认行为。 首先,事件传播分为两个主要阶段:冒泡和捕获。冒泡是从最深的DOM节点开始,事件向上逐级传播到根...

    【JavaScript源代码】javascript事件冒泡,事件捕获和事件委托详解.docx

    JavaScript中的事件处理是Web开发中的核心概念,主要涉及事件冒泡、事件捕获以及事件委托。这三种机制在处理用户交互和DOM元素之间的事件时起着至关重要的作用。 1. **事件冒泡**:事件冒泡是事件处理的默认模式,...

Global site tag (gtag.js) - Google Analytics