Javascript中的所有事件是否都捕获并冒泡?
我正在从事一个项目,在该项目中,我将一个eventListener绑定到Javascript中的所有事件是否都捕获并冒泡?,javascript,jquery,dom-events,event-bubbling,event-capturing,Javascript,Jquery,Dom Events,Event Bubbling,Event Capturing,我正在从事一个项目,在该项目中,我将一个eventListener绑定到事件的元素,将另一个eventListener绑定到同一事件的父元素。我注意到总是调用孩子的回调,但从来没有调用过家长的回调 如果我使用addEventListener()的捕获模式,那么两个回调通常都会被调用——第一个是父回调,然后是子回调 为了进一步调查,我编写了一段代码,发现play事件不会返回给父级 父项=document.querySelector('div'); child=document.querySele
事件的
元素,将另一个eventListener绑定到同一事件的父元素。我注意到总是调用孩子的回调,但从来没有调用过家长的回调
如果我使用addEventListener()
的捕获模式,那么两个回调通常都会被调用——第一个是父回调,然后是子回调
为了进一步调查,我编写了一段代码,发现play事件不会返回给父级
父项=document.querySelector('div');
child=document.querySelector('div audio');
addEventListener('click',function(){console.log('parent-click-capture');},true);
addEventListener('click',function(){console.log('parent-click-bubble');},false);
addEventListener('play',function(){console.log('parent-play-capture');},true);
addEventListener('play',function(){console.log('parent-play-bubble');},false);
addEventListener('click',function(){console.log('child-click-capture');},true);
addEventListener('click',function(){console.log('child-click-bubble');},false);
addEventListener('play',function(){console.log('child-play-capture');},true);
addEventListener('play',function(){console.log('child-play-bubble');},false);
这就是结果:
父级单击捕获子单击捕获
子单击气泡
家长单击气泡
家长播放捕获
儿童游戏捕获
儿童游戏泡泡
是否有人知道这种行为只是游戏事件的特殊行为,还是有其他事件没有进入气泡阶段(或捕获阶段)?所有JS事件都进入捕获阶段 可以通过读取事件的状态来检查事件是否进入
气泡
阶段
并非所有事件都有气泡,您需要检查每个事件的规范,以查看它是否支持气泡
element.addEventListener('ACTION', (e) => console.log(e.bubbles))