W3C对DOM2.0定义的标准事件

简介: DOM2.0模型将事件处理流程分为三个阶段:   一、事件捕获阶段,   二、事件目标阶段,   三、事件起泡阶段。 具体如图(图片来源于网络,侵删) 事件捕获:当某个元素触发某个事件(如onclick),顶层对象document就会发出一个事件流,随着DOM树的节点向目标元素节点流去,直到到达事件真正发生的目标元素。

DOM2.0模型将事件处理流程分为三个阶段:

  一、事件捕获阶段,

  二、事件目标阶段,

  三、事件起泡阶段。

具体如图(图片来源于网络,侵删)

事件捕获:当某个元素触发某个事件(如onclick),顶层对象document就会发出一个事件流,随着DOM树的节点向目标元素节点流去,直到到达事件真正发生的目标元素。在这个过程中,事件相应的监听函数是不会被触发的。

事件目标:当到达目标元素之后,执行目标元素该事件相应的处理函数。如果没有绑定监听函数,那就不执行。

事件起泡:从目标元素开始,往顶层元素传播。途中如果有节点绑定了相应的事件处理函数,这些函数都会被一次触发。如果想阻止事件起泡,可以使用e.stopPropagation()(Firefox)或者e.cancelBubble=true(IE)来组织事件的冒泡传播。

 解释:比方说:ul,li,p,a都绑定了一个click事件,被点击后执行弹出自己的nodeName

  如果是捕获模式下的绑定那弹出顺序是:ul -> li -> p -> a.

  如果是冒泡模式下的绑定那弹出顺序是:a -> p -> li -> ul.

     chrome和ff浏览器的事件模式是冒泡

  ie浏览器的事件模式是捕获

  上边介绍的是w3c里的事件,

W3C标准中那个addEventListener()函数,它里面最后一个参数false代表冒泡,true代表捕获,这是什么意思呢?因为W3C作为一个标准,它选择了一个相对折中的方案去处理事件,也就是任何在W3C事件模型中发生的事件都先进入捕获阶段,然后在进入冒泡阶段,保证一个事件会经历这两个阶段,以适应IE和其他非IE浏览器,这样使用者可以根据需求选择将事件注册到哪一个阶段

代码在这里:

  

<ul id="ul">
    <li id="li">
        <p id="p">
            <a id="a" href="#">aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</a>
        </p>
    </li>
</ul>


// 这是js代码
    var ul = document.getElementById('ul');
    var li = document.getElementById('li');
    var p = document.getElementById('p');
    var a= document.getElementById('a');
    ul.addEventListener('click',function(e){
        console.log("ul");
    },true);
    li.addEventListener('click',function(e){
        console.log("li");
    },true);
    p.addEventListener('click',function(e){
        console.log("p");
    },true);
    a.addEventListener('click',function(e){
        console.log("a");
    },true);

 

这里是执行结果:

捕获:   

冒泡:

目录
相关文章
|
5月前
|
XML 消息中间件 JavaScript
从0开始学习JavaScript--JavaScript DOM操作与事件处理
在前端开发中,DOM(文档对象模型)是一个至关重要的概念,它为JavaScript提供了一种与HTML和XML文档交互的方法。本文将深入探讨DOM的概念与作用,以及JavaScript与DOM之间的密切关系。
|
9天前
|
JavaScript 前端开发
JavaScript HTML DOM 事件
JavaScript HTML DOM 事件
14 5
|
5月前
|
XML JavaScript 前端开发
属性和方法向 XML DOM 定义了编程接口
XML DOM 提供编程接口,通过属性和方法操作XML结构。使用JavaScript等语言,可访问和修改节点。属性如nodeName、nodeValue揭示节点信息,方法如getElementsByTagName、appendChild、removeChild实现查找、添加和删除节点功能。节点对象x的应用示例贯穿其中。
|
1月前
|
前端开发 JavaScript
CSS中禁用DOM事件
CSS中禁用DOM事件
|
3月前
|
移动开发 JavaScript 前端开发
VUE实现一个列表清单【props 父子组件通信、slot插槽的使用、全局自定义指令的封装、$nextTick解决异步DOM更新、巧用v-model简化父子组件之间的通信、触发事件的事件源event】
VUE实现一个列表清单【props 父子组件通信、slot插槽的使用、全局自定义指令的封装、$nextTick解决异步DOM更新、巧用v-model简化父子组件之间的通信、触发事件的事件源event】
33 0
|
4月前
|
XML JavaScript 前端开发
属性和方法向 XML DOM 定义了编程接口
XML DOM 是一个编程接口,它将XML表示为节点对象集合,可通过JavaScript等语言访问。接口通过属性和方法定义,属性如nodeName、nodeValue显示节点信息,方法如getElementsByTagName、appendChild、removeChild执行操作。例如,x.nodeName返回节点名称,x.appendChild(node)添加子节点。
|
5月前
|
JavaScript
js_操作dom(委托和冒泡事件)
js_操作dom(委托和冒泡事件)
35 0
|
XML JavaScript 前端开发
|
JavaScript
JS(Dom事件操作)第十九
JS(Dom事件操作)第十九
181 0
|
5月前
|
存储 JavaScript 前端开发
JavaScript:DOM事件
JavaScript:DOM事件
52 0