将事件侦听器附加到整个 html 文档的最佳方式
Best way of attaching event listener to the whole html document
让我们考虑在整个HTML文档上捕获mousemove
的问题。
我知道可以附加事件侦听器的四个对象:
window
、document
、document.body
、document.documentElement
经过简单的测试,在我看来,附加到其中任何一个都具有相同的效果。
$(window).on('mousemove', function(){console.log(1)})
我想知道是否有任何我不知道的差异(性能、兼容性?)
将事件绑定到 document.body
对象有两个潜在问题:
有些浏览器不允许在页面内容开始解析之前访问body对象,所以直接在head中绑定事件是行不通的。您需要从 load
或 ready
事件或正文中的代码绑定它。
在符合标准的模式下(HTML 4,XHTML,HTML5)主体元素不会自动覆盖整个 window.它只会像它需要包含的内容一样大,并且它的边距没有被 body 元素覆盖。
此外,如果页面包含框架,则此方法无效。在这种情况下,请按照说明的步骤进行操作 here。
让我们考虑在整个HTML文档上捕获mousemove
的问题。
我知道可以附加事件侦听器的四个对象:
window
、document
、document.body
、document.documentElement
经过简单的测试,在我看来,附加到其中任何一个都具有相同的效果。
$(window).on('mousemove', function(){console.log(1)})
我想知道是否有任何我不知道的差异(性能、兼容性?)
将事件绑定到 document.body
对象有两个潜在问题:
有些浏览器不允许在页面内容开始解析之前访问body对象,所以直接在head中绑定事件是行不通的。您需要从
load
或ready
事件或正文中的代码绑定它。在符合标准的模式下(HTML 4,XHTML,HTML5)主体元素不会自动覆盖整个 window.它只会像它需要包含的内容一样大,并且它的边距没有被 body 元素覆盖。
此外,如果页面包含框架,则此方法无效。在这种情况下,请按照说明的步骤进行操作 here。