将事件监听器附加到整个html文档的最佳方法

Dan*_*Dan 8 html javascript jquery dom mouseevent

让我们考虑mousemove整个HTML文档的捕获问题.

我知道可以附加事件监听器的四个对象:

window,document,document.body,document.documentElement

经过简单的测试,在我看来,附加到它们中的任何一个都具有相同的效果.

$(window).on('mousemove', function(){console.log(1)})
Run Code Online (Sandbox Code Playgroud)

我想知道是否有任何我不知道的差异(性能,兼容性?)

Guf*_*ffa 7

将事件绑定到document.body对象有两个潜在的问题:

  • 一些浏览器不允许在页面中的内容开始被解析之前访问 body 对象,因此直接在头部绑定事件将不起作用。您需要从loadorready事件或主体内的代码绑定它。

  • 在标准兼容模式(HTML 4、XHTML、HTML5)中,body 元素不会自动覆盖整个窗口。它只会与包含内容所需的一样大,并且它的边距未被 body 元素覆盖。

此外,如果页面包含框架,那么这将不起作用。在这种情况下,请按照此处说明的步骤操作。