我在网上看到的大部分代码使用document.onkeydown
,但MDN只列出了window.onkeydown
。 This comment也建议使用window.onkeydown
。是否有区别或理由使用一个在另一个之上?window.onkeydown和document.onkeydown有什么区别吗?
3
A
回答
5
请参阅从Event dispatch and DOM event flow如下图:
有三种event phases:
的捕获阶段:事件对象必须通过从目标的祖先传播defaultView给目标的父母。 这个阶段也被称为捕获阶段。为此阶段注册的事件监听器 必须在事件到达其目标 之前处理事件。
目标阶段:事件对象必须到达事件对象的event target。这个阶段也被称为目标阶段的 阶段。在此阶段注册的事件监听器必须在事件达到目标时处理事件。如果event type指示该事件不能冒泡,则在完成此阶段后,事件对象 必须停止。
的气泡相:事件对象传播通过以相反的顺序目标的祖先,开始与目标的父 并与defaultView结束。这个阶段也被称为 冒泡阶段。在此阶段注册的事件侦听器必须在事件达到目标后处理事件。
因此,主要区别在于,事件侦听器添加到window
将处理事件之后的事件侦听器在泡沫阶段的情况下加入到document
;以及在捕获阶段之前。
相关问题
- 1. vbNullString和“”之间有什么区别吗?
- 2. svg和png img有什么区别吗?
- 3. Spring和Spring.net有什么区别吗?
- 4. html和*有什么区别吗?
- 5. RPC和IPC有什么区别吗?
- 6. log4net.Config.BasicConfigurator.Configure()和log4net.Config.XmlConfigurator.Configure()有什么区别吗?
- 7. UserLocalServiceUtil.addRoleUser和RoleLocalServiceUtil.addUserRole有什么区别吗?
- 8. UserDict和Dict有什么区别吗?
- 9. .NET和ASP.NET有什么区别吗
- 10. s ++和* s ++有什么区别吗?
- 11. Viterbi CYK和Probabilistic CYK算法有什么区别,有什么区别吗?
- 12. 有什么区别`和$(Bash中有什么区别?
- 13. ==和===有什么区别?
- 14. ==和===有什么区别?
- 15. 有什么区别? :和||
- 16. ==和===有什么区别?
- 17. '=='和'==='有什么区别?
- 18. `&`和`ref`有什么区别?
- 19. 有什么区别:。!和:r!?
- 20. | 0和~~有什么区别?
- 21. Appender和〜有什么区别?
- 22. xtype和别名有什么区别?
- 23. const_cast VS可变吗?有什么区别?
- 24. 有什么区别
- 25. 有什么区别
- 26. 有什么区别?
- 27. 有什么区别?
- 28. 有什么区别?
- 29. 有什么区别
- 30. 有什么区别?
我猜测在文档上使用窗口的原因是因为它不必传播到目前为止? – Yay295 2014-11-22 02:11:46
@ Yay295你的意思是相反的吗? – MCTaylor17 2014-11-22 02:36:02
据我所知,如果你使用窗口,它将进入窗口 - >事件 - >窗口,并且如果你使用文档,它会进入窗口 - >文档 - >事件 - >文档 - >窗口。 – Yay295 2014-11-22 02:44:02