2014-11-22 378 views

回答

5

请参阅从Event dispatch and DOM event flow如下图:

graphical representation of an event dispatched in a DOM tree using the DOM event flow

有三种event phases

  • 捕获阶段:事件对象必须通过从目标的祖先传播defaultView给目标的父母。 这个阶段也被称为捕获阶段。为此阶段注册的事件监听器 必须在事件到达其目标 之前处理事件。

  • 目标阶段:事件对象必须到达事件对象的event target。这个阶段也被称为目标阶段的 阶段。在此阶段注册的事件监听器必须在事件达到目标时处理事件。如果event type指示该事件不能冒泡,则在完成此阶段后,事件对象 必须停止。

  • 气泡相:事件对象传播通过以相反的顺序目标的祖先,开始与目标的父 并与defaultView结束。这个阶段也被称为 冒泡阶段。在此阶段注册的事件侦听器必须在事件达到目标后处理事件。

因此,主要区别在于,事件侦听器添加到window将处理事件之后的事件侦听器在泡沫阶段的情况下加入到document;以及在捕获阶段之前。

+0

我猜测在文档上使用窗口的原因是因为它不必传播到目前为止? – Yay295 2014-11-22 02:11:46

+0

@ Yay295你的意思是相反的吗? – MCTaylor17 2014-11-22 02:36:02

+0

据我所知,如果你使用窗口,它将进入窗口 - >事件 - >窗口,并且如果你使用文档,它会进入窗口 - >文档 - >事件 - >文档 - >窗口。 – Yay295 2014-11-22 02:44:02