以下前端代码的运行结果是()
<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