小米2020前端校招笔试题 addEventListener事件触发顺序

以下前端代码的运行结果是()

<div id="box1">
  <div id="box2">
    content
  </div>
</div>
<script>
const $ = document.querySelector.bind(document);
const box1 = $('#box1');
const box2 = $('#box2');
box1.addEventListener('click', () => {
  console.log('box1 true');
}, true);
box1.addEventListener('click', () => {
  console.log('box1 false');
}, false);
box2.addEventListener('click', () => {
  console.log('box2 true');
}, true);
box2.addEventListener('click', () => {
  console.log('box2 false');
}, false);
</script>

注:addEventListener(type,callback,useCapture))事件的触发阶段
事件捕捉–>事件冒泡
1、事件捕捉
捕获型事件(event capturing):事件从最不精确的对象(document 对象)开始触发,然后到最精确(也可以在窗口级别捕获事件,不过必须由开发人员特别指定)
2、事件冒泡
冒泡型事件:事件按照从最特定的事件目标到最不特定的事件目标(document对象)的顺序触发。

其中参数useCapture
ture表示在事件捕捉时触发
false表示在事件冒泡时触发
单击content
开始事件捕捉,document->…->box1->box2;触发了useCapture为true的事件
输出box1 true box2 true
开始事件冒泡,box2->box1->…->document;触发了useCapture为false的事件
输出box2 false box1 false

发布了14 篇原创文章 · 获赞 8 · 访问量 6136

猜你喜欢

转载自blog.csdn.net/KangTongShun/article/details/104274849