Javascript addeventListener中useCapture的推理?

Javascript addeventListener中useCapture的推理?,javascript,events,event-handling,event-bubbling,Javascript,Events,Event Handling,Event Bubbling,我有4个按钮,每个按钮按下时播放自己的音乐。我需要的东西,暂停一个音乐时,另一个按钮被点击,这样我就不会有所有的4个音乐播放在彼此的顶部。我找到了以下代码来解决这个问题: document.addEventListener('play', function(event){ var allAudios = document.getElementsByTagName('audio'); debugger; for(var i = 0; i<allAudios.length; i++){

我有4个按钮,每个按钮按下时播放自己的音乐。我需要的东西,暂停一个音乐时,另一个按钮被点击,这样我就不会有所有的4个音乐播放在彼此的顶部。我找到了以下代码来解决这个问题:

document.addEventListener('play', function(event){
var allAudios = document.getElementsByTagName('audio');
debugger;
for(var i = 0; i<allAudios.length; i++){
    if(allAudios[i] != event.target){
        allAudios[i].pause();
    }
}
}, true);
document.addEventListener('play',函数(事件){
var allAudios=document.getElementsByTagName('audio');
调试器;
对于(var i=0;i


谢谢

tl;dr:因为
播放
事件不会冒泡,您希望收听(捕获)在
文档中发生的所有播放事件

useCapture
允许您捕获通常不会冒泡的事件。在您引用的脚本上下文中,您正在侦听
play
事件。
play
事件不会像其他事件一样冒泡,您希望捕获(侦听)在
文档中发生的所有
播放
事件,因此您可以启用
使用捕获
来捕获所有
播放
事件,以便知道何时暂停所有其他音乐播放

如何知道何时需要将
useCapture
设置为
true

  • 访问
  • 单击要使用的事件
  • 在顶部的“常规信息”下,查看“气泡”是否设置为“是”或“否”
  • 如果事件没有冒泡,并且您将侦听将触发事件的元素以外的元素上的事件,请将use capture设置为true

    资料来源:

    编辑 有关
    useCapture
    工作原理的更多详细信息: