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

Я буду 1, а затем 2 . http://jsfiddle.net/kkYfX/