Порядок выполнения обработчиков событий JavaScript
имея этот код JS:
document.getElementById('e1').addEventListener('click', function(){alert('1');}, false);
document.getElementById('e2').addEventListener('click', function(){alert('2');}, false);
document.getElementById('e1').click();
document.getElementById('e2').click();
мне интересно, в каком порядке будут отображаться оповещения - будет ли это в том порядке, в котором события были вызваны click()
или это может быть случайным?
Я спрашиваю о документированном / стандартизированном поведении, а не о том, что браузеры в настоящее время реализуют.
2 ответов
оповещения будут выполняться в порядке - 1
а то 2
. Это потому что click
событие синхронно (см. здесь) - когда .click()
выдается обработчик будет запущен немедленно (посмотрите на последний абзац здесь). Итак, этот код:
document.getElementById('e1').addEventListener('click', function(){alert('1');}, false);
document.getElementById('e2').addEventListener('click', function(){alert('2');}, false);
document.getElementById('e1').click();
document.getElementById('e2').click();
alert('3');
даст тот же результат, что и
alert('1');
alert('2');
alert('3');