首页 > 快讯 > > >正文

关于DOM0级处理事件、DOM2级处理事件、阻止冒泡的一点心得

2023-03-28 18:18:19 来源:哔哩哔哩

什么是事件流?

事件流描述的是从页面中接受事件的顺序,但有意思的是,微软(IE)和网景(Netscape)开发团队居然提出了两个截然相反的事件流概念,IE的事件流是事件冒泡流(event bubbling),而Netscape的事件流是事件捕获流(event capturing)

一、什么事DOM 0级处理事件?

举个例子,你直接在DOM 标签上绑定的onClick事件,

<button  onClick={this.func}  id='btn'/>


(资料图)

或者通过document.getElemmentByXX('btn')此类方式获取到

let btn = document.getElemmentById('btn')

btn.click = function() { console.log('xxxxx') }

如上两种方式,通过给 dom对象的属性赋值函数的,称为DOM 0级事件处理。

DOM 0级事件规定的事件流包含3个阶段,事件捕获阶段、处于目标阶段、事件冒泡阶段。首先发生的事件捕获为截获事件提供机会,然后是实际的目标接收事件,最后一个阶段是事件冒泡阶段,可以在这个阶段对事件做出响应。

二、什么事DOM 2级处理事件?

DOM 2级事件定义了两方法:用于处理添加事件和删除事件的操作:添加事件 addEventListener()删除事件 removeEventListener(),通过如下方式添加事件处理的称为DOM 2级处理事件。

let btn = document.getElemmentById('btn')

function showFunc () { console.log('xxxxx') }

btn.addEventListener(click, showFunc, false) 

如上,通过addEventListener()添加事件的方法称为DOM 2级处理事件,需要注意的是,DOM2级处理事件没有事件捕获阶段、冒泡阶段等。

三、在项目中是否遇到过需要使用e.stopPropagation去阻止冒泡的情况?为什么?

搞清楚DOM 0级处理事件和DOM 2级处理事件的区别,就清楚为什么有时候需要在项目中使用e.stopPropagation操作了。当你给父元素和子元素同时添加了onClick事件的时候,如果是通过DOM 0级处理事件的方式去添加,就一定会出现冒泡阶段同时触发两个元素的onClick操作,因此,你就需要在子元素事件中添加e.stopPropagation()方法去组织冒泡。

关键词:

本文来源: 哔哩哔哩


上一篇: 三星S23系列抗跌落测试:全面优于前代 Ultra最耐摔
下一篇: 最后一页

为您推荐
推荐阅读

资讯

行业

服务

人才