常見的前端面試題目

常見的前端面試題目

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

相关推荐

有声问答
最佳娱乐365bet娱乐场下载

有声问答

🗓️ 10-05 👁️ 409
mindfulness
365bet真人体育

mindfulness

🗓️ 07-03 👁️ 2140
[求助]请问下,大家对魔技纳米这家公司了吗
最佳娱乐365bet娱乐场下载

[求助]请问下,大家对魔技纳米这家公司了吗

🗓️ 07-11 👁️ 412
蒸饺的详细做法
最佳娱乐365bet娱乐场下载

蒸饺的详细做法

🗓️ 09-19 👁️ 7788
华为软件测试是没人报吗?
365bet真人体育

华为软件测试是没人报吗?

🗓️ 10-18 👁️ 1695
22款拉杆箱对比测评:9款不够结实;小米、稻草人等获“全五星”
如何打开DOS窗口?
365bet真人体育

如何打开DOS窗口?

🗓️ 07-06 👁️ 3543
如何解决泰迪挑食问题(提供营养均衡的饮食,让泰迪吃得健康快乐)
【雕像】塞伯坦的守卫者!Prime 1 Studio:新品 <变形金刚:塞博坦之战> 擎天柱 UT终极版 官图
理財研究室
最佳娱乐365bet娱乐场下载

理財研究室

🗓️ 09-16 👁️ 2973
Wings战队TI6夺冠背后的故事(从无名小队到国际大赛冠军的成功之路)
全民枪战哪个龙系列比较好?龙系列武器购买推荐[图]
最佳娱乐365bet娱乐场下载

全民枪战哪个龙系列比较好?龙系列武器购买推荐[图]

🗓️ 10-19 👁️ 8933