JavaScript — приоритет событий DOM

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

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

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

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

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

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

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

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

Понравилась статья? Поделиться с друзьями:
JavaScript & TypeScript
Adblock
detector