scrollTop()在chrome中返回0

时间:2011-10-19 09:13:00

标签: javascript jquery google-chrome

我想检查页面在完成加载后是否滚动并且我正在使用此代码:

$(document).ready(function(){   
    alert($(window).scrollTop());
});

它在Firefox中运行良好,但总是在Chrome中返回0。这是为什么?

6 个答案:

答案 0 :(得分:4)

实际上,Firefox是domReady或window.onload上唯一不为$(window).scrollTop()返回0的浏览器。 Chrome,Safari和IE都返回0.在domReady中获取滚动条正确位置的唯一安全方法是,如上面的另一个答案中所述,在窗口的滚动事件上设置事件处理程序,如下所示:

$(document).ready(function(){   
    $(window).scroll(function() {
        console.log($(window).scrollTop());
        $(window).unbind('scroll');
    });
});

答案 1 :(得分:2)

当窗口不可滚动时,

$(window).scrollTop()将返回0

答案 2 :(得分:2)

一旦加载DOM,chrome就会恢复预刷新滚动位置。因此,在scroll事件而不是ready事件上获取scrollTop将起作用。

答案 3 :(得分:2)

我还遇到了scrollTop()始终在Chrome中返回0的问题,无论我是在windowdocument还是'html,body'上使用它。我终于发现css是问题所在:

html, body {
    height: 100%;
    overflow-x: hidden;
}

实际上,我并不确切知道原因,因为您可以删除部分代码,然后再次运行。奇怪但问题解决了;)

答案 4 :(得分:0)

在页面底部有一些文本和链接的页面中尝试以下代码。请记住有足够的文字或空白行,以便滚动页面,直到您看到我的按钮

 $(document).ready(function () {
        alert($(window).scrollTop()); // first load if you did not scroll = 0
        $("#button").click(function () { alert($(window).scrollTop()); }); 
        // hitting the button that is located on bottom of page 
        // - i had to scroll the page = xxx (68 in may case)
    });

在你的情况下获得0是正常的,因为页面没有滚动,你的位置和页面顶部之间的偏移是0。

我试过Chrome,FF6,IE9。 我希望我能提供帮助。

答案 5 :(得分:0)

我遇到了同样的问题但是通过添加文档声明得到修复:

<!DOCTYPE html>