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 回答