В каком порядке приоритеты обрабатываются событиями в JavaScript?
Вот события в алфавитном порядке ...
В каком порядке они выводятся из очереди событий?
Я считаю, что приоритет не по принципу «первым пришел - первым обслужен» (FIFO).



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Насколько мне известно, в прошлом это не было четко определено. Различные браузеры могут свободно реализовывать порядок событий, как они считают нужным. В то время как большинство из них достаточно близки для всех практических целей, были и остаются некоторые странные крайние случаи, когда браузеры несколько отличаются (и, конечно же, гораздо больше случаев, когда определенные браузеры не могут отправлять определенные события совсем).
Тем не менее, Черновик рекомендации HTML 5 действительно пытается указать, как события будут помещаться в очередь и отправляться - цикл событий:
To coordinate events, user interaction, scripts, rendering, networking, and so forth, user agents must use event loops as described in this section.
There must be at least one event loop per user agent, and at most one event loop per unit of related similar-origin browsing contexts.
An event loop has one or more task queues. A task queue is an ordered list of tasks [...] When a user agent is to queue a task, it must add the given task to one of the task queues of the relevant event loop. All the tasks from one particular task source must always be added to the same task queue, but tasks from different task sources may be placed in different task queues. [...]
[...]a user agent could have one task queue for mouse and key events (the user interaction task source), and another for everything else. The user agent could then give keyboard and mouse events preference over other tasks three quarters of the time, keeping the interface responsive but not starving other task queues, and never processing events from any one task source out of order. [...]
Обратите внимание на последний бит: реализация браузера должна определять, какие события будут сгруппированы вместе и обработаны по порядку, а также приоритет, присвоенный любому конкретному типу события. Следовательно, нет оснований ожидать, что все браузеры будут отправлять события все в фиксированном порядке, сейчас или в будущем.
Если вы смотрите на события мыши / касания, Патрик Х. Лауке опубликовал разговор на эту тему. Определенно интересное чтение - и оно касается всех особенностей разных браузеров, разных устройств и разных стандартов.
Еще он связывает исчерпывающий набор тестов.
Для тех, кто хочет знать, как вызываются относительные события последовательности, см. Ниже. Пока тестировал только в Chrome.
Если я инициирую событие click, могу ли я также запускать предыдущие события (mousedown, change, blur, focus, mouseup)?
где здесь dragstart?
Не забывайте эти ключевые события:
ondragstart,ondragover,ondragend,ondblclick,oncontextmenu.