带你读《现代Javascript高级教程》八、JavaScript事件流:深入理解事件处理和传播机制(2)

简介: 带你读《现代Javascript高级教程》八、JavaScript事件流:深入理解事件处理和传播机制(2)

带你读《现代Javascript高级教程》八、JavaScript事件流:深入理解事件处理和传播机制(1)https://developer.aliyun.com/article/1349641?groupCode=tech_library


2. 事件流的属性

事件流涉及到三个主要的概念:事件捕获阶段、目标阶段和事件冒泡阶段。了解这些阶段和相关的属性对于理解事件流的机制至关重要。

 

1) 事件捕获阶段

 

事件捕获阶段是事件流的第一个阶段,从根节点开始向下传播到目标元素。在事件捕获阶段中,事件依次经过每个父元素,直到达到目标元素。

 

在事件捕获阶段,可以使用addEventListener的第三个参数指定事件处理程序在捕获阶段中执行。

 

element.addEventListener('click', handler, true);

 

2) 目标阶段

 

目标阶段是事件流的第二个阶段,事件到达目标元素后被触发执行事件处理程序。

 

3) 事件冒泡阶段

 

事件冒泡阶段是事件流的最后一个阶段,事件从目标元素开始向上冒泡,依次经过每个父元素,直到达到根节点。

 

在事件冒泡阶段,可以使用addEventListener的第三个参数设置为false或省略来指定事件处理程序在冒泡阶段中执行(默认值)。

 

element.addEventListener('click', handler, false);// 或
element.addEventListener('click', handler);

 

4) 事件对象

 

在事件处理程序中,可以通过事件对象访问和操作相关的事件信息。事件对象提供了一些属性和方法,可以获取事件的类型、目标元素、鼠标坐标等信息。

 

例如,可以通过事件对象的type属性获取事件类型:

 

element.addEventListener('click', function(event) {
  console.log(event.type); // 输出 'click'});

3. 事件流的应用场景

事件流在前端开发中具有广泛的应用场景,下面介绍几个常见的应用场景:

 

1)事件处理

 

事件流提供了一种机制,用于处理和响应用户的交互操作。通过在目标元素上注册事件处理程序,可以捕获和处理用户触发的事件,实现交互功能。

 

例如,通过在按钮上注册click事件处理程序,可以在按钮被点击时执行相应的代码逻辑。

 

const button = document.getElementById('myButton');
button.addEventListener('click', function(event) {
  console.log('按钮被点击');});

2 事件代理

 

事件代理(Event Delegation)是一种常见的优化技术,用于处理大量具有相似行为的子元素事件。通过在父元素上注册事件处理程序,可以利用事件冒泡机制,统一管理子元素的事件处理。

 

例如,可以在父元素上注册click事件处理程序,根据触发事件的具体子元素进行不同的操作。

 

const list = document.getElementById('myList');
list.addEventListener('click', function(event) {
  if (event.target.tagName === 'LI') {
    console.log('项目被点击');
  }});

 

3 事件委托

 

事件委托是一种通过将事件处理委托给父元素来提高性能和简化代码的技术。它利用事件冒泡机制,在父元素上注册一个事件处理程序,处理多个子元素的相同事件。

 

例如,可以在父元素上注册click事件处理程序,根据触发事件的子元素的不同类别执行不同的操作。

const container = document.getElementById('myContainer');
container.addEventListener('click', function(event) {
  if (event.target.classList.contains('button')) {
    console.log('按钮被点击');
  } else if (event.target.classList.contains('link')) {
    console.log('链接被点击');
  }});

 

带你读《现代Javascript高级教程》八、JavaScript事件流:深入理解事件处理和传播机制(3)https://developer.aliyun.com/article/1349639?groupCode=tech_library

相关文章
|
1月前
|
Web App开发 JavaScript 前端开发
javascript onkeydown事件
javascript onkeydown事件
|
26天前
|
JavaScript 前端开发 UED
JS DOM 事件流与事件冒泡
【10月更文挑战第16天】理解 DOM 事件流和事件冒泡是掌握 JavaScript 事件处理的关键。通过合理利用事件冒泡,可以实现更高效、灵活的事件处理机制,提升用户体验和开发效率。在实际开发中,要根据具体情况灵活运用这些概念,以达到最佳的效果。
|
3月前
|
JavaScript 前端开发
js事件队列
js事件队列
141 55
|
1月前
|
JavaScript
js两种移除事件的方法
js两种移除事件的方法
33 2
|
2月前
|
JavaScript 前端开发
JavaScript 事件
JavaScript 事件
34 2
|
3月前
|
JavaScript 前端开发
JavaScript 事件流
JavaScript 事件流
34 1
|
28天前
|
存储 JavaScript 前端开发
js事件队列
【10月更文挑战第15天】
44 6
|
2月前
|
JavaScript 前端开发
JavaScript HTML DOM 事件
JavaScript HTML DOM 事件
22 5
|
2月前
|
监控 JavaScript 前端开发
|
1月前
|
JavaScript API
深入解析JS中的visibilitychange事件:监听浏览器标签间切换的利器
深入解析JS中的visibilitychange事件:监听浏览器标签间切换的利器
91 0