为啥jQuery不能监听document.body的滚动事件呢?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为啥jQuery不能监听document.body的滚动事件呢?相关的知识,希望对你有一定的参考价值。

为什么jQuery不能监听document.body的滚动事件呢?今天发现这句代码没效果:$(document.body).scroll(function(e) alert('我滚动了'););请教各位大侠,这是为什么呢?

<script type="text/javascript">
window.onbeforeunload= function ()
return "关闭网页"; //关闭网页时的弹窗

window.onscroll= function ()
alert("页面滚动");

window.onresize= function ()
alert("页面大小改变了");

window.onmousewheel= function ()
alert("鼠标滚动了");

</script>
参考技术A 这个问题问得好,
不过它跟jQuery貌似没什么关系,
跟BOM和DOM是有关系的。
参考技术B 这个问题问得好,不过它跟jQuery貌似没什么关系,跟BOM和DOM是有关系的。用基于miniYUI轻量级框架的JS来测试一下各大主流浏览器下window和document以及document.body上的滚动事件,得出以下结论:[*]几乎所有浏览器都不支持在document.body上监听整个网页的滚动事件,除了QQ浏览器;[*]几乎所有浏览器都支持在window对象上监听整个网页的滚动事件;[*]几乎所有浏览器都支持在document对象上监听整个网页的滚动事件,除了QQ浏览器;[*]几乎所有浏览器都支持用document.documentElement.scrollTop来获取网页的滚动高度,除了Chrome和Safari;[*]只有Chrome和Safari支持用document.body.scrollTop来获取网页的高度;主要测试的浏览器:IE 9,Firefox 12.0,Chrome 20.0.1132.11,Safari 5.1.2,QQ浏览器 6.13通过测试,我们得出获取网页滚动高度scrollTop的最佳实践为:[*]把获取滚动高度的事件处理程序绑定到window对象上;[*]通过获取document.documentElement.scrollTop和document.body.scrollTop两者之间较大值为网页的真实滚动高度。基于miniYUI的测试示例代码如下:miniYUI.event.on(window, 'scroll', function(e) alert(Math.max(document.body.scrollTop, document.documentElement.scrollTop));); 参考技术C $(window).scroll(function())

以上是关于为啥jQuery不能监听document.body的滚动事件呢?的主要内容,如果未能解决你的问题,请参考以下文章

html中body元素已经加载完成为啥还是不能追加节点

jquery如何获取元素的滚动条高度等实现代码

为啥我应用jquery框架,对按钮绑定了一个监听事件后,按钮不能执行这个事件

vue监听页面宽度高度

设置 document.body.outerHTML 会创建空头。为啥?

两种监听页面滚动的方法