JS浏览器事件处理

时间:2015-01-08 15:21:04

标签: javascript browser event-handling event-queue

现在我对浏览器事件感到有些困惑。我还不确定事件循环是如何开始工作的。例如,当我在某个函数的中间调度自定义事件时,事件处理是立即开始还是移动到事件队列?   其他事件呢?如果我点击或页面加载,会发生什么?事件处理过程何时开始?

1 个答案:

答案 0 :(得分:1)

  

我仍然不确定事件循环是如何开始工作的。

通常在浏览器中,一旦您进入页面就会开始工作,并在退出时停止工作。

  

例如,当我在某个函数的中间调度自定义事件时,事件处理是立即开始还是移动到事件队列?

有同步事件(立即触发)和在下一次迭代中触发的异步事件。除非您明确终止任何 else,否则您的代码通常运行到执行结束。

DOM自定义事件通常是同步的。那就是 - 你是触发他们的人,而且它会马上发生。

例如,如果您运行了代码并且发生"click"事件或者设置了setTimeout的计时器,则代码将首先完成运行 - 没有任何“中断”您的代码。

  

事件处理过程何时开始?

As specified

  

可以同步或异步调度事件。

     

同步事件(同步事件)必须被视为它们位于先进先出模型中的虚拟队列中,按照其他事件的时间序列顺序排序,以及DOM中的更改,以及用户交互。必须延迟此虚拟队列中的每个事件,直到上一个事件完成其传播行为或已取消。某些同步事件由特定设备或进程驱动,例如鼠标按钮事件。这些事件由为该组事件定义的事件顺序算法控制,用户代理必须按照定义的顺序分派这些事件。