Распространение событий Javascript не работает должным образом
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 секунды? (никогда не срабатывает)
1 ответ
В соответствии со спецификацией событий 3-го уровня W3C DOM, поток событий имеет 3 фазы: захват, цель и пузырь. И если "… Event.stopPropagation () был вызван до отправки, все фазы должны быть пропущены".
Таким образом, поскольку stopPropagation был вызван до отправки события, ни одна фаза не будет выполнена, включая целевую фазу.