Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript中的所有事件是否都捕获并冒泡?_Javascript_Jquery_Dom Events_Event Bubbling_Event Capturing - Fatal编程技术网

Javascript中的所有事件是否都捕获并冒泡?

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绑定到
事件的
元素,将另一个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))