当前位置: 首页 > 面试题库 >

DOM事件优先级

危璞
2023-03-14
问题内容

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建议草案确实尝试指定如何将事件排队和调度事件循环:

为了协调事件,用户交互,脚本,渲染,联网等,用户代理必须使用本节中描述的事件循环。

每个用户代理必须至少有一个事件循环,并且每个单位的相关相似起源浏览上下文最多应有一个事件循环。

一个事件循环具有一个或多个任务队列。任务队列是任务的有序列表。当用户代理要对任务进行排队时,它必须将给定任务添加到相关事件循环的任务队列之一中。必须始终将来自一个特定任务源的所有任务添加到同一任务队列中,但是可以将来自不同任务源的任务放在不同的任务队列中。[…]

一个用户代理可以有一个任务队列用于鼠标和按键事件(用户交互任务源),而另一个则用于其他所有任务。然后,用户代理可以在四分之三的时间中给予键盘和鼠标事件优先于其他任务的权限,使界面保持响应状态,但不会使其他任务队列饿死,并且永远不会乱序处理任何一个任务源的事件。[…]

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



 类似资料:
  • 这些天,我阅读了一些关于和的文档。我了解到Javascript是一个单线程,每次只会执行一段代码。同时,如果有事件发生,它会被推送到事件队列中并阻塞,直到适当的时间。我想知道,当许多事件被阻塞等待同时执行时。这些事件是否具有不同的优先级,因此高优先级事件会在低优先级事件之前执行。或者只是一个FIFO队列。 在上面的代码中,setTimeout fn1将在10 ms发生,Click事件处理程序fn2

  • 在启动Quarkus应用程序时 java-jar目标/quarkus应用程序/quarkus运行。罐子 或者用一个打包好的Uber罐子: ClassNotFoundException:javax。注释。优先事项 但是当我从IntelliJ或与 mvn quarkus:dev 一切都开始得很好。 完整堆栈跟踪: $java-jar目标/quarkus应用程序/quarkus运行。线程“main”ja

  • DOM 事件流描述了 DOM 时间响应的阶段、路径。 DOM 事件流也会被称为 DOM 事件模型。 1. 事件流阶段 事件流有三个阶段: 捕获阶段 从window开始,寻找触发事件最深层的节点,过程中如果有节点绑定了对应事件,则触发事件 目标阶段 找到事件触及的最深节点 冒泡阶段 从最深节点按照捕获的路径进行返回,过程中如果有节点绑定了对应事件,则触发事件 现代浏览器默认都会在冒泡阶段触发事件。

  • 事件是您在编程时系统内发生的动作或者发生的事情,系统通过它来告诉您在您愿意的情况下您可以以某种方式对它做出回应。例如:如果您在网页上单击一个按钮,您可能想通过显示一个信息框来响应这个动作。在这篇文章中我们将围绕事件讨论一些重要的概念,并且观察它们在浏览器上是怎么工作的。这篇文章并不做彻底的研究仅聚焦于您现阶段需要掌握的知识。—— MDN 事件即某个情况、某个事情。 当按钮被点击 视频播放、暂停 关

  • Event 对象代表事件的状态,比如事件在其中发生的元素、键盘按键的状态、鼠标的位置、鼠标按钮的状态。(W3C) 事件对象会在事件被触发时获得,对象包含了当前事件的一些信息,如点击事件可以获取到点击的位置,键盘输入事件可以获取到按下的键。 1. 获取事件对象 在给 DOM 节点绑定事件时,需要传递一个事件处理器,其本质上是个函数,在事件触发时被调用。 在事件处理器被调用时,默认就会传递一个参数,这

  • DOM 提供了许多事件供开发者进行绑定,以响应各种操作,丰富页面交互。 想要触发事件,就得先给 DOM 节点绑定事件,提供事件处理器。 1. 直接在 HTML 上提供事件 这种方式是将事件内联在 HTML 代码中。 案例演示 预览 复制 复制成功! <style> .box { width: 100px; height: 100px; background: green