Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/432.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript window.onkeydown和document.onkeydown之间有区别吗?_Javascript - Fatal编程技术网

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事件流始终是相同的,它不依赖于您的事件侦听器。但是,取决于您连接事件侦听器的节点,它将在事件流的不同时刻运行。好的,我想我现在明白了。谢谢