私がこのレイアウトを持っているとしましょう
<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のキャプチャハンドラは実行されません(バブリングフェーズ中にキャプチャハンドラがキャッチしないため)。または、ディスパッチされたイベントは他のイベントとまったく同じように動作し、ドキュメントから開始してキャプチャフェーズ全体を実行しますか?