22

我将页面的主体设置为 200% 高,以便它可以在屏幕上显示两次。使用 javascript 我让它在你滚动时一直滚动到顶部或底部。为此,我需要在任何浏览器或屏幕尺寸上找出页面的最低滚动点,以便它到达那里时停止。

请不要使用 JQuery。
谢谢你。

我的代码:(它仍在组合中,所以需要一些工作)

function getScrollXY() {
    var x = 0, y = 0;
    if( typeof( window.pageYOffset ) == 'number' ) {
        // Netscape
        x = window.pageXOffset;
        y = window.pageYOffset;
    } else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
        // DOM
        x = document.body.scrollLeft;
        y = document.body.scrollTop;
    } else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
        // IE6 standards compliant mode
        x = document.documentElement.scrollLeft;
        y = document.documentElement.scrollTop;
    }
    return [x, y];
}

function scrollup() {
    if (xy[1] > 0) {
        window.scrollBy(0,-100);
        setTimeout(scrollup,200);
    } else {
        null;
    }
}

function scrolldown() {
    if (xy[1] < ) {
        window.scrollBy(0,100);
        setTimeout(scrolldown,200);
    } else {
        null;
    }
}

function dothescroll() {
    var xy = getScrollXY();
    var y = xy[1];
    setTimeout(function(){
        if (xy[1] > y) {
            scrollup();
        } else {
            scrolldown();
        }
    },200);
}
4

4 回答 4

38

这是跨浏览器兼容版本:

var limit = Math.max( document.body.scrollHeight, document.body.offsetHeight, 
                   document.documentElement.clientHeight, document.documentElement.scrollHeight, document.documentElement.offsetHeight );
于 2013-07-17T11:33:52.023 回答
19

虽然这不是任何规范的一部分,但您可以尝试window.scrollMaxY.

返回文档可以垂直滚动的最大像素数。 https://developer.mozilla.org/docs/Web/API/Window/scrollMaxY


不可用时回退:

var scrollMaxY = window.scrollMaxY || (document.documentElement.scrollHeight - document.documentElement.clientHeight)

请注意,documentElement滚动元素并不总是(某些浏览器使用body)。解决方案是新scrollingElement属性,它返回对滚动文档的元素的引用。它已被指定,但仍是工作草案。

于 2017-04-23T12:49:25.213 回答
17
var limit = document.body.offsetHeight - window.innerHeight;
// document.body.offsetHeight = computed height of the <body>
// window.innerHeight = available vertical space in the window

相比xy[1] < limit

注意:您可能需要通过正文的边距和/或填充来增加值。您也可以尝试使用clientHeight而不是offsetHeight.

于 2013-07-17T02:36:13.067 回答
-1

window.scrollTo(0, document.body.scrollHeight);

这会工作..

于 2014-07-08T06:57:47.737 回答