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

Best way of attaching event listener to the whole html document

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

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

windowdocumentdocument.bodydocument.documentElement

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

$(window).on('mousemove', function(){console.log(1)})

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

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

  • 有些浏览器不允许在页面内容开始解析之前访问body对象,所以直接在head中绑定事件是行不通的。您需要从 loadready 事件或正文中的代码绑定它。

  • 在符合标准的模式下(HTML 4,XHTML,HTML5)主体元素不会自动覆盖整个 window.它只会像它需要包含的内容一样大,并且它的边距没有被 body 元素覆盖。

此外,如果页面包含框架,则此方法无效。在这种情况下,请按照说明的步骤进行操作 here