gpt4 book ai didi

javascript - DOM 事件优先级

转载 作者:IT王子 更新时间:2023-10-29 02:57:55 27 4
gpt4 key购买 nike

在 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)。

最佳答案

据我所知,这在过去并没有明确定义。不同的浏览器可以自由地实现他们认为合适的事件排序。虽然大多数对于所有实际目的来说都足够接近,但已经存在并将继续存在一些奇怪的边缘情况,其中浏览器有些不同(当然,还有更多情况是某些浏览器根本无法发送某些事件).

也就是说,HTML 5 draft recommendation确实尝试指定事件将如何排队和分派(dispatch) - the event loop :

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. [...]

请注意最后一点:由浏览器实现决定将哪些事件组合在一起并按顺序处理,以及赋予任何特定类型事件的优先级。因此,没有理由期望所有浏览器现在或将来都以固定顺序发送所有事件。

关于javascript - DOM 事件优先级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/282245/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com