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

时间:2015-05-17 10:14:33

标签: javascript jquery html dom mouseevent

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

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

windowdocumentdocument.bodydocument.documentElement

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

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

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

1 个答案:

答案 0 :(得分:4)

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

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

  • 在符合标准的模式(HTML 4,XHTML,HTML5)中,body元素不会自动覆盖整个窗口。它只会包含内容所需的大小,如果它有一个未被body元素覆盖的边距。

此外,如果页面包含框架,那么这不会起作用。在这种情况下,请按照here解释的步骤进行操作。