事件委托和窗口与window.document

saw*_*awa 5 html javascript events event-delegation

我想做事件委托并通过绑定到整个文档的事件处理程序捕获DOM对象上发生的所有事件.将事件绑定到以下内容之间是否有任何区别window:

window.addEventListener(event, function(e){
  var obj = e.target;
  ... // if `obj` is a certain kind of object, then do something
}, false);
Run Code Online (Sandbox Code Playgroud)

window.document在下面?

window.document.addEventListener(event, function(e){
  var obj = e.target;
  ... // if `obj` is a certain kind of object, then do something
}, false);
Run Code Online (Sandbox Code Playgroud)

event是某种事件一样'click','mouseover'

Ke *_*Vin 4

window和之间是有区别的window.documentwindow与浏览器的可视部分相关,并且始终首先加载。这window.document是页面的主体,其中显示所有内容和 DOM,包括所有隐藏的部分,直到滚动到它们才会显示它们。

您列出的事件是用户触发的事件,并且将始终影响窗口的可视端口。我想不出您会收到例如在您的视口之外的点击事件的任何情况。据我所知,您甚至无法生成这样的事件,即不绑定到特定元素而是绑定到屏幕上的位置的事件。keyupkeydown、 ... 事件也是如此。

window要回答您的问题,将事件绑定到或之间没有功能差异window.document。唯一不同的是this函数调用内的属性。对我来说,将事件绑定到window.documentDOM 而不是绑定到window.