Javascript window.onkeydown和document.onkeydown之间有区别吗?
我在网上看到的大多数代码都使用Javascript window.onkeydown和document.onkeydown之间有区别吗?,javascript,Javascript,我在网上看到的大多数代码都使用document.onkeydown,但MDN只列出了这些代码。还建议使用window.onkeydown。使用其中一种方法是否有区别或原因?请参见以下图表: 有三种: 捕获阶段:事件对象必须通过目标的祖先从传播到目标的父对象。 此阶段也称为捕获阶段。事件侦听器 为此阶段注册的必须在事件到达其目标之前处理该事件 目标 目标阶段:事件对象必须到达事件对象的目标阶段。这个阶段也被称为 在目标阶段。为此阶段注册的事件侦听器必须在事件到达其目标后处理该事件。如果指示事件
document.onkeydown
,但MDN只列出了这些代码。还建议使用window.onkeydown
。使用其中一种方法是否有区别或原因?请参见以下图表:
有三种:
- 捕获阶段:事件对象必须通过目标的祖先从传播到目标的父对象。 此阶段也称为捕获阶段。事件侦听器 为此阶段注册的必须在事件到达其目标之前处理该事件 目标
- 目标阶段:事件对象必须到达事件对象的目标阶段。这个阶段也被称为 在目标阶段。为此阶段注册的事件侦听器必须在事件到达其目标后处理该事件。如果指示事件不能冒泡,则事件对象 此阶段完成后必须停止
- 气泡阶段:事件对象以相反顺序通过目标的祖先传播,从目标的父对象开始 最后是最后一句。这个阶段也被称为 鼓泡阶段。为此阶段注册的事件侦听器必须在事件到达其目标后处理该事件
因此,主要区别在于,在冒泡阶段,添加到
窗口
的事件侦听器将在添加到文档
的事件侦听器之后处理事件;在捕获阶段之前。我猜使用window over document的原因是因为它不必传播得太远?@Yay295你的意思是相反的吗?据我所知,如果使用window,它会变成window->event->window,如果您使用文档,它将进入窗口->文档->事件->文档->窗口。@Yay295事件流始终是相同的,它不依赖于您的事件侦听器。但是,取决于您连接事件侦听器的节点,它将在事件流的不同时刻运行。好的,我想我现在明白了。谢谢