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

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

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

  1. onabort - Загрузка изображения прервана
  2. onblur - Элемент теряет фокус
  3. onchange - Пользователь изменяет содержание поля
  4. onclick - Щелчки мышью объект
  5. ondblclick - Дважды щелкает мышью по объекту
  6. onerror - Ошибка происходит при загрузке документа или изображения
  7. onfocus - Элемент получает фокус
  8. onkeydown - Клавиша на клавиатуре нажимается
  9. onkeypress - Клавиша на клавиатуре нажимается или удерживается
  10. onkeyup - Клавиша на клавиатуре выпущена
  11. onload - Страница или изображение закончены, загрузившись
  12. onmousedown - Кнопка мыши нажимается
  13. onmousemove - Мышь перемещена
  14. onmouseout - Мышь отъезжается элемент
  15. onmouseover - Мышь отодвинута элемент
  16. onmouseup - Кнопка мыши отпускается
  17. onreset - Кнопка сброса нажата
  18. onresize - Окно или кадр изменены
  19. onselect - Текст выбран
  20. onsubmit - Кнопка отправки нажата
  21. onunload - Пользователь выходит из страницы

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

Приоритет не является методом "первым пришел - первым вышел" (FIFO) или таким образом, я верю.

54
задан Brian Tompsett - 汤莱恩 17 October 2019 в 01:23
поделиться

0 ответов

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

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

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

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

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

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

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

35
ответ дан Shog9 7 November 2019 в 08:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: