山海策战地速报 - 跨服战场情报中心

常见的前端面试题目

DOM事件流:冒泡与捕获当DOM元素上发生事件时,事件会按照特定顺序传播。根据W3C事件模型,事件传播分为三个阶段:捕获阶段、目标阶段和冒泡阶段。

documenthtmlbodydivbutton (target)Click me↓捕获阶段document → html → body → div → button冒泡阶段↑button → div → body → html → document捕获阶段 (Capturing Phase)事件从DOM树的顶部(document)向下传播到目标元素的过程。

标准事件监听器中,设置第三个参数为true即可在捕获阶段捕获事件:

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

冒泡阶段 (Bubbling Phase)事件从目标元素向上传播到DOM树顶部(document)的过程。

默认情况下,事件处理器在冒泡阶段被调用:

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

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

// 模拟事件流

document.addEventListener('click', () => console.log('1. 捕获: document'), true);

document.addEventListener('click', () => console.log('6. 冒泡: document'), false);

document.body.addEventListener('click', () => console.log('2. 捕获: body'), true);

document.body.addEventListener('click', () => console.log('5. 冒泡: body'), false);

const button = document.querySelector('button');

button.addEventListener('click', () => console.log('3. 捕获: button'), true);

button.addEventListener('click', () => console.log('4. 冒泡: button'), false);

// 点击button时的输出顺序:

// 1. 捕获: document

// 2. 捕获: body

// 3. 捕获: button

// 4. 冒泡: button

// 5. 冒泡: body

// 6. 冒泡: document

最终契约 开服,开启奇幻冒险之旅!
玩梦幻西游用什么流量卡最划算?推荐哪些流量卡?
2025-11-14 03:29:26

友情链接