计算网页上的滚动结束

时间:2012-09-05 10:08:12

标签: javascript jquery html

我需要计算网页上滚动的结束,以便我可以进行Ajax调用。 我在stackoverflow中搜索了帖子,但解决方案对我没用。

我正在使用以下代码离子顺序来确定:

$(window).scrollTop() == $(document).height() - $(window).height()

但上述条件失败,无法知道页面滚动何时结束。

由于L.H.S和R.H.S的值不匹配,因此条件失败。 只是为了检查我使用过:

$(window).scrollTop() == $(document).height() - $(window).height() - 13

适用于chrome和firefox但是IE失败了。 我需要一个具体的解决方案,不想硬编码值。 请帮助我做对。

编辑:具体来说,我正在尝试计算垂直滚动条的结束。

4 个答案:

答案 0 :(得分:3)

以下是我要做的事情:

$(window).on('scroll', function() {
if($(window).scrollTop() != 0)
{    
    if( $(window).height() + $(window).scrollTop() >= $(document).height() )
    {
    //YES, I AM EXACTLY AT THE END OF THE SCROLL, PLZ FIRE AJAX NOW
    }
}
});

注意:请注意页面上任何元素的样式都有负顶边距!!它可能会抵消计算!

答案 1 :(得分:1)

要计算滚动结束,请尝试scrollHeight property

答案 2 :(得分:1)

这应该为你检索页面高度(不是使用jQuery而是使用javascript):

var height = document.body.clientHeight;

您会发现这是解决您问题的最佳跨浏览器解决方案。

答案 3 :(得分:0)

这是你如何做到的。您获取滚动距离并添加窗口高度,然后检查它们是否等于文档高度:

$(window).on('scroll', function() {
    if (($(this).scrollTop() + $(this).height()) - $(document).outerHeight(true) >= 0) {
        alert('Scrolled to bottom');
    }
});

FIDDLE

这适用于所有五种浏览器!