`
sangeshitou
  • 浏览: 27575 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

HTML 事件机制

阅读更多

页面上点击一个按钮,浏览器做了什么?

今天我们就浅浅的了解下,浏览器到底干了什么。

 

当页面触发一个事件的时候,浏览器主要做了三个阶段的事情:

 

  1. capture phase:捕获事件阶段
  2. target phase: 目标处理阶段
  3. bubble phase: 后续事件处理阶段
capture阶段就是当事件被触发的时候,产生事件对象,传递事件对象,最终找到目标元素触发事件。
那么事件是如何传递的呢?
  1. 浏览器会产生一个Event对象,包含目标元素的标识,事件名称等信息
  2. 然后,浏览器从DOM结构的根节点开始向各个也节点分发Event对象
从根节点到目标节点的父节点,这个过程就叫做capture阶段。

target阶段指Event对象到达了目标节点。
当Event对象到达了目标节点,目标节点将会马上执行注册好的监听器。
event.preventDefault();
 以上代码阻止了元素的默认行为,比如a标签的默认行为是打开href定义的页面。

bubble阶段是指当target阶段结束后,从目标节点反向的传递到跟节点的过程。
我们可以通过
event.stopPropagation();
 来阻止向上传递的过程。

具体序列图如下:


 
那么HTML是如何约束这个机制的呢,我们来看下整体的接口:


 
以上是HTML接口图:
Event接口规定了产生的事件的详细信息,包含事件目标对象,事件是否可以取消,事件所处的阶段等等信息。
CustomEvent则是Event的扩展,提供了第三方的扩展性。
DocumentEvent则是负责Event对象的产生。
EventListener规定了事件监听器的主要行为。
EventTarget负责Event对象的分发和事件监听器的注册以及响应。

我们来看一个实例:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
 <HEAD>
  <TITLE> New Document </TITLE>
  <META NAME="Generator" CONTENT="EditPlus">
  <META NAME="Author" CONTENT="">
  <META NAME="Keywords" CONTENT="">
  <META NAME="Description" CONTENT="">
 </HEAD>
 <BODY>
	<div id="d" onclick="alert('this is bubble phase');"> 
		this is div
		<a id="a" href="#" onclick="alert('target');">test</a>
	</div>
 </BODY>
 <script type="text/javascript">
	document.getElementById("d").addEventListener('click',function(){
		alert("this is capture phase");
	},true);
 </script>
</HTML>
 
点击test连接的时候,alert的顺序
  1. this is capture phase
  2. target
  3. this is bubble phase
addEventListener
 的第三个参数是useCapture,true表示是否将此事件监听器注册到capture阶段。

  • 大小: 137.4 KB
  • 大小: 80.8 KB
分享到:
评论

相关推荐

    JavaScript事件机制详细研究

    JavaScript 事件机制详细研究 JavaScript 事件机制是指浏览器中发生的各种事件,例如点击、鼠标悬停、键盘输入等,JavaScript 通过捕捉这些事件来执行相应的操作。本文将详细介绍 JavaScript 事件机制的实现方式和...

    openlayer事件机制介绍

    事件机制是OpenLayers的核心部分,它使得用户与地图进行交互成为可能。在OpenLayers中,事件机制主要涉及到控件(Controls)和处理器(Handlers)的概念。 控件在OpenLayers中扮演着重要的角色,它们是附加到地图上...

    js事件监听机制(事件捕获)总结

    首先,事件监听器可以通过多种方法添加,包括直接在HTML元素上使用内联属性如onclick,或通过JavaScript函数绑定。内联属性方式简单易用,但不推荐用于复杂的项目,因为它将行为与结构混合,不易于维护和管理。而...

    Html dom _BOM 模型 _事件处理机制 _面向对象基础

    标题中提及的HTML DOM、BOM模型、事件处理机制以及面向对象基础是JavaScript编程中的核心概念。以下是对这些知识点的详细阐述: 1. HTML DOM(文档对象模型) HTML DOM是HTML文档的编程接口,提供了一种结构化文档...

    jQuery第4天知识点:jQuery节点操作、jQuery特殊属性操作、jQuery事件机制.zip

    今天我们将主要关注jQuery中的节点操作、特殊属性操作以及事件机制。 一、jQuery节点操作 1. 选择器:jQuery提供了丰富的选择器,如ID选择器(#id)、类选择器(.class)、元素选择器(element)等,用于快速定位DOM元素...

    HTML4.0 参考手册 HTML事件资料大全

    同时,随着Web技术的发展,HTML5引入了更多新的事件和特性,但HTML4.0仍然是许多现有网站的基础,因此深入理解这一版本的HTML事件是非常有价值的。通过DHTML手册和HTML事件资料大全,开发者可以全面系统地学习这些...

    这次一定彻底弄懂DOM事件机制

    在网页端、移动端H5、小程序等各个终端环境的前端开发中随处可见事件的运用,可见事件机制的是前端这一块的重中之重。经过我研读了大量博客文章以及开源框架源码后,这次算是对DOM事件机制有了更新更全面的的认识。 ...

    无线Web页面事件机制调研

    《无线Web页面事件机制调研——探索WAP 2.0与XHTML MP》 随着无线网络技术的飞速发展,WAP(Wireless Application Protocol)论坛在早期为适应无线网络环境,制定了一系列如WTCP、WDP、WSP、WTP和WML等协议,这些...

    javascript 中事件冒泡和事件捕获机制的详解

    javascript 中事件冒泡和事件捕获机制的详解 二者作用:描述事件触发时序问题 事件捕获:从document到触发事件的那个节点,即自上而下的去触发事件—由外到内 事件冒泡:自下而上的去触发事件—由内到外 绑定事件...

    JavaScript事件机制

    ### JavaScript事件机制详解 #### 一、事件绑定方式 在JavaScript中,事件绑定是指将一个事件处理函数与特定的DOM元素关联起来的过程。这可以通过多种方式进行实现。 ##### 内联事件处理程序 这是一种较为简单的...

    深入理解JS DOM事件机制

    JavaScript DOM事件机制是Web开发中的核心概念之一,它关乎如何响应用户与网页元素的交互。在深入理解这一机制前,我们需要了解三个关键术语:事件流、事件冒泡和事件捕获。 1. 事件流: 事件流描述了事件在HTML...

    matlab仿真程序,二阶MASs,事件触发机制

    对于“仿真程序二阶事件触发机制.html”和“仿真程序二阶事件触发机制.txt”,这两个文件很可能是关于二阶MAS事件触发仿真程序的详细说明或代码示例。HTML文件可能包含了一个网页格式的教程或报告,详细解释了仿真...

    第六节 HTML事件中的XSS-01

    HTML事件处理器是现代浏览器中的一种机制,用于监视特定的条件或用户行为,例如鼠标单击或浏览器窗口中完成加载某个图像。攻击者可以通过在HTML事件处理器中注入恶意代码,来触发XSS漏洞。 HTML事件介绍 ----------...

    分析浏览器底层事件循环处理机制.pdf

    为分析宏任务setTimeout、XMLHttpRequest和UI事件触发处理onbuttonClick()之间是否存在优先级、微任务Promise及MutationObserver之间是否存在优先级、宏任务与微任务之间的是否存在优先级,编写node.js上下文环境的...

    React事件处理的机制及原理

    React事件处理机制和原理是React框架中一个非常核心的概念,它允许开发者通过声明式的方式处理各种事件。React事件并不是直接绑定在DOM元素上,而是通过一个中间层进行事件的委托。这种委托机制使得React能够高效地...

    unigui_ajax Post Callback -返回参数 HTMLFrame 事件_1

    5. **错误处理**:确保当Ajax请求失败或HTMLFrame加载出现问题时,有适当的错误处理机制。 理解并掌握以上知识点对于使用Unigui进行Ajax通信和处理HTMLFrame事件至关重要。通过实践和理解这些概念,开发者可以创建...

    <html5+css3+js>各种事件

    总结来说,HTML5、CSS3和JavaScript的事件机制为开发者提供了强大的工具,使网页具有高度的交互性和动态性。熟练掌握事件处理的各种方式,可以让你的网页更加生动活泼,提升用户体验。在实际开发中,应根据需求选择...

    Javascript的事件处理机制

    事件(Event)是JavaScript应用跳动的心脏...在漫长的演变史,我们已经告别了内嵌式的事件处理方式(直接将事件处理器放在HTML元素之内来使用)。今天的事件,它已是DOM的重要组成部分,遗憾的是,IE继续保留它最早在IE4

Global site tag (gtag.js) - Google Analytics