前端经典面试题合集, 什么是 Javascript 的事件流?有哪些事件流模型?
前端经典面试题合集, 什么是 Javascript 的事件流?有哪些事件流模型?
QA
Step 1
Q:: 什么是 JavaScript 的事件流?
A:: JavaScript 的事件流是指在网页中事件传播的过程。事件流有两个主要的模型:事件冒泡和事件捕获。事件冒泡指的是事件从最具体的元素开始传播,然后逐级向上传播到最不具体的元素。事件捕获则相反,事件从最不具体的元素开始,然后逐级向下传播到最具体的元素。
Step 2
Q:: 有哪些事件流模型?
A:: 事件流模型主要有两种:事件冒泡(Event Bubbling)和事件捕获(Event Capturing)。事件冒泡是指事件从目标元素向上冒泡到根元素的过程,而事件捕获是指事件从根元素向下捕获到目标元素的过程。在实际开发中,W3
C 的标准事件模型综合了这两种模型。
Step 3
Q:: 什么是事件冒泡?
A:: 事件冒泡是指事件从事件的目标元素开始,逐级向上传播到根元素的过程。例如,当点击一个按钮时,点击事件会首先被按钮处理,然后是它的父元素,再然后是更高一级的父元素,直到传播到根元素(通常是 document 对象)。
Step 4
Q:: 什么是事件捕获?
A:: 事件捕获是指事件从文档的根元素开始,逐级向下传播到事件的目标元素的过程。捕获阶段在冒泡阶段之前发生。尽管捕获阶段较少用,但在某些情况下非常有用,例如在处理一些全局性事件时。
Step 5
Q:: 如何使用 addEventListener 方法进行事件监听?
A:: addEventListener 是用于注册事件处理程序的方法。它接受三个参数:事件类型、事件处理函数和一个布尔值(表示是在捕获阶段还是冒泡阶段调用处理程序)。例如:element.addEventListener('click', function, true) 会在捕获阶段调用处理程序,而 element.addEventListener('click', function, false)
则会在冒泡阶段调用处理程序。