Javascript addeventListener中useCapture的推理?
我有4个按钮,每个按钮按下时播放自己的音乐。我需要的东西,暂停一个音乐时,另一个按钮被点击,这样我就不会有所有的4个音乐播放在彼此的顶部。我找到了以下代码来解决这个问题: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++){
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
工作原理的更多详细信息: