假设我有这个布局
<body>
<div class="A">
<span class="B">span</span>
</div>
<body>
我使用委托的非捕获处理程序将各处的点击转换为自定义事件并在其原始目标上调度它:
document.addEventListener('click',function(e){
e.target.dispatchEvent(new CustomEvent('custom'));
}, false);
我为 A 分配了一个捕获事件侦听器:
div_class_A_element.addEventListener('custom',function(){
console.log('captured custom on A');
}, true);
当我点击 B 时会发生什么?我需要一个播放一个播放。另外请不要告诉我只是 jsfiddle 它,我知道我可以做到,但我想知道的是规范说它应该做什么?
这是我的猜测:
一旦单击事件从文档一直向下传递到 B,然后一直返回到文档,文档的委托处理程序就会在 B 上运行。现在会发生什么我不知道:它在 B 上调度自定义事件:自定义事件是否从 B 开始并开始冒泡?如果是这样,那么 A 的捕获处理程序将不会运行(因为捕获处理程序在冒泡阶段不会捕获)。或者调度的事件是否会像其他事件一样运行,并从文档开始执行整个捕获阶段?