$(document).scrollTop()始终返回0

jet*_*lej 66 javascript jquery scrolltop

一旦页面的滚动位置达到一定高度,我就会尝试做某事.然而scrollTop()返回0或null无论我滚动多远.这是我用来检查scrollTop()值的帮助功能:

$('body').click(function(){
    var scrollPost = $(document).scrollTop();
    alert(scrollPost);
});
Run Code Online (Sandbox Code Playgroud)

我试图连接scrollTop()$('body'),$('html')当然$(window),但没有任何变化.

有任何想法吗?

jet*_*lej 109

出于某种原因,从我的html和body标签中删除"height:100%"修复了此问题.

我希望这有助于其他人!

  • 对于我们这些不使用jQuery的人,我的建议是使用`window.scrollY`代替. (10认同)
  • 解决这个问题的简单方法是在body和html上设置max-height而不是height. (2认同)

Ver*_*rri 41

我在scroll = 0中遇到了同样的问题:

document.body.scrollTop
Run Code Online (Sandbox Code Playgroud)

下次使用

document.scrollingElement.scrollTop
Run Code Online (Sandbox Code Playgroud)

编辑01.06.2018

如果你使用event那么你得到了具有document元素的对象targetsrcElement.例 这是一个显示不同浏览器上的滚动操作的表.

在此输入图像描述

正如你所看到的,Firefox和IE没有srcElement,IE 11也不支持scrollingElement.

  • `document.scrollingElement.scrollTop` 是否适合移动设备?! (2认同)

Ste*_*ood 6

我的解决方案,尝试上面的一些,并不涉及更改任何CSS:

var scroll_top = Math.max( $("html").scrollTop(), $("body").scrollTop() )
Run Code Online (Sandbox Code Playgroud)

这适用于Chrome,Firefox,IE和Edge的最新版本.


Daw*_*jam 6

height: 100%;从 html 和 body 标签中删除可以解决这个问题。

原因是您可能已将 100% 设置为 html 和 body 元素的 height 属性值。如果将 html 和 body 元素的 height 属性设置为 100%,则它们的高度等于文档的高度。


小智 5

我只是为那些可能犯同样错误的人添加了一个附件.我的代码如下:

var p = $('html,body');
$( ".info" ).text( "scrollTop:" + p.scrollTop() );
Run Code Online (Sandbox Code Playgroud)

此代码适用于除了webkits浏览器(如chrome和safari)之外的所有浏览器,因为<html>标记的scrollTop值始终为零或null.

其他浏览器会忽略它,而webkit的浏览器则不会.

最简单的解决方法是从你的代码中移除html标签et Voila:

var p = $('body');
$( ".info" ).text( "scrollTop:" + p.scrollTop() );
Run Code Online (Sandbox Code Playgroud)