Порядок выполнения обработчиков событий 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');