addEventListener 应该添加到 window 还是 document?

发布于 2022-09-01 05:49:39 字数 20 浏览 18 评论 0

二者之间有什么不同呢?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

风和你 2022-09-08 05:49:39

window、document都可以添加,看一下w3c关于dom事件模型的定义:

  • 捕获
    The event object must propagate through the target's ancestors from the Window to the target's parent. This phase is also known as the capturing phase. Event listeners registered for this phase must handle the event before it reaches its target.
  • 目标元素
    The event object must arrive at the event object's event target. This phase is also known as the at-target phase. Event listeners registered for this phase must handle the event once it has reached its target. If the event type indicates that the event must not bubble, the event object must halt after completion of this phase.
  • 冒泡
    The event object propagates through the target's ancestors in reverse order, starting with the target's parent and ending with the Window. This phase is also known as the bubbling phase. Event listeners registered for this phase must handle the event after it has reached its target.

按照标准来说,任何事件都会经过以上三个阶段,事件不管是捕获还是冒泡,都会经过window和document。

因此,你使用window.addEventListenerdocument.addEventListener来处理页面上的事件,区别仅仅在于,不同事件模型上,处理的顺序不一样:

  • 捕获,window先于document
  • 冒泡,document先于window

我们可以addEventListener的第三个参数来使用不同的事件模型,true代表我们想在捕获阶段处理事件,false代表我们想在冒泡阶段处理事件,默认是false

泪眸﹌ 2022-09-08 05:49:39

应该是document下的对象上吧。
document本身属于window中的一个对象。
但是他又属于dom对象,和文档元素有联系。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文