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秒后事件没有发生? (它永远不会发射)
答案 0 :(得分:0)
根据W3C DOM Level 3 Events Specficiation,event flow有三个阶段:捕获,目标和泡沫。如果&#34; ...在调度之前调用了Event.stopPropagation(),则必须跳过所有阶段&#34;。
因为在调度事件之前已经调用了 stopPropagation ,所以不会执行任何阶段,包括目标阶段。