0
window.document.addEventListener('click', function(e) {
        event.preventDefault();
        event.stopPropagation();
        setTimeout(function(){e.target.dispatchEvent(e);}, 2000);
}, true);

<button onclick="console.log('test')">test</button>

2 秒経ってもイベントが発生しないのはなぜですか? (決して発火しません)

4

1 に答える 1

0

W3C DOM Level 3 Events Specificationによると、イベント フローにはキャプチャ、ターゲット、バブルの 3 つのフェーズがあります。また、「…Event.stopPropagation() がディスパッチの前に呼び出された場合、すべてのフェーズをスキップする必要があります」。

そのため、イベントがディスパッチされる前にstopPropagationが呼び出されているため、ターゲット フェーズを含むフェーズは実行されません。

于 2014-10-14T03:29:56.987 に答える