面试题
什么是捕获与冒泡?

什么是捕获与冒泡?

在 HTML 中,当事件被触发时,事件会经过三个阶段:捕获阶段、目标阶段和冒泡阶段。

  • 捕获阶段:从 document 对象开始逐级向下传递直到事件源元素。事件处理函数会按照由父元素到子元素的顺序被依次执行。
  • 目标阶段:当事件传递到事件源元素时,就进入了目标阶段。在目标阶段可以通过event.target获取到触发事件的具体元素。
  • 冒泡阶段:从事件源元素开始逐级向上传递直到 document 对象。事件处理函数会按照由子元素到父元素的顺序被依次执行。

可以通过 addEventListener() 函数的第三个参数(选项)设置 capture 选项来监听事件的捕获阶段,否则监听将在冒泡阶段触发。 事件传递过程中,如果事件处理函数调用了 event.stopPropagation() 方法,当侦听的事件是捕获时,阻断的就是捕获过程,当侦听的事件是冒泡时,阻断的就是冒泡过程。 捕获stop会阻断冒泡。