Подтвердить что ты не робот

Приоритет события DOM

Какой порядок приоритета - события, обрабатываемые в JavaScript?

Вот события в алфавитном порядке...

  • onabort - Загрузка изображения прервала
  • onblur - элемент теряет фокус
  • onchange - пользователь меняет содержимое поля
  • onclick - Мышь нажимает на объект
  • ondblclick - мышь дважды кликает Объект
  • onerror - возникает ошибка, когда загрузка документа или изображения
  • onfocus - элемент получает фокус
  • onkeydown - клавиша клавиатуры нажимается
  • onkeypress - клавиша клавиатуры нажата или удерживается
  • onkeyup - клавиша клавиатуры  выпустила
  • onload - страница или изображение  готовая загрузка.
  • onmousedown - кнопка мыши  нажимается
  • onmousemove - Мышь перемещена.
  • onmouseout - мышь отключена  элемент
  • onmouseover - мышь перемещается  над элементом
  • onmouseup - кнопка мыши  выпустила
  • onreset - кнопка reset  щелкнул
  • onresize - Окно или рамка  изменение размера
  • onselect - выбран текст
  • onsubmit - кнопка отправки  щелкнул
  • onunload - пользователь выходит из страницы

Какой порядок они обрабатывают из очереди событий?

Приоритет не первый-в-первом-выход (FIFO) или, как я полагаю.

4b9b3361

Ответ 1

Это не было, насколько я знаю, явно определенным в прошлом. Различные браузеры могут свободно выполнять заказы на события, но они подходят. Хотя большинство из них достаточно близки для всех практических целей, были и остаются некоторые случаи с нечетным краем, когда браузеры несколько отличаются (и, конечно же, многие другие случаи, когда некоторые браузеры вообще не могут отправлять определенные события).

Тем не менее, рекомендация HTML 5 делает попытку указать, как события будут поставлены в очередь и отправлены - цикл событий:

Для координации событий пользователь взаимодействие, скрипты, рендеринг, сети и т.д., пользовательские агенты должны использовать циклы событий, как описано в этот раздел.

Должен быть хотя бы один цикл событий за агента пользователя и не более одного события петля на единицу связанной контексты просмотра аналогичного происхождения.

Цикл событий имеет одну или несколько задач Очереди. Очередь задач - это упорядоченная список задач [...] Когда пользовательский агент ставит в очередь задачу, он должен добавить задание к одному из очереди задач соответствующего события петля. Все задачи от одного конкретный источник задачи всегда должен быть добавлен в ту же очередь задач, но задачи из разных источников быть помещены в разные очереди задач. [...]

[...] у пользовательского агента может быть одна очередь задач для событий мыши и ключа (пользователь источник задачи взаимодействия), а другой для всего остального. Пользовательский агент может затем дать клавиатуру и мышь предпочтение от других задач три четверти времени, сохраняя интерфейс реагирует, но не голодные другие очереди задач, и никогда обработка событий из одной задачи источник не в порядке. [...]

Обратите внимание, что последний бит: до реализации браузера зависит, какие события будут сгруппированы и обработаны по порядку, а также приоритет, заданный любому конкретному типу события. Поэтому нет оснований ожидать, что все браузеры будут отправлять все события в фиксированном порядке, сейчас или в будущем.

Ответ 2

Для тех, кто хочет знать, что относительные события последовательности вызываются, см. ниже. Пока что я только тестировал в Chrome.

  • Наведите курсор мыши на
  • MouseMove
  • MouseOut

  • MouseDown
  • изменение (на сфокусированном вводе)
  • размытие (на сфокусированном элементе)
  • фокус
  • mouseup
  • нажмите
  • dblclick

  • KeyDown
  • нажатие клавиши
  • KeyUp

Ответ 3

Если вы смотрите на события мыши/касания, Патрик Х. Лауке опубликовал разговор по этому вопросу. Определенно интересное чтение - и касается всех причуд разных браузеров, разных устройств и разных стандартов.

Он также связывает полный набор тестов.