Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/449.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何获得最大文档滚动上限值_Javascript_Jquery_Scrolltop - Fatal编程技术网

Javascript 如何获得最大文档滚动上限值

Javascript 如何获得最大文档滚动上限值,javascript,jquery,scrolltop,Javascript,Jquery,Scrolltop,我正在制作一些插件,我需要获得文档的最大值。 最大scrollTop值为2001,但$(文档)。height()返回2668和$('body')[0]。scrollHeight给我未定义的 如何通过javascript/jquery获取2001 您评论中的代码应该有效: $(document).height() - $(window).height() 下面是一个当您滚动到最大滚动位置时发出警报的示例:如果您想“猜测”最大滚动顶部值,可能应该比较文档高度和视口高度(窗口大小) 当然,在您的插件

我正在制作一些插件,我需要获得文档的最大值。 最大
scrollTop
值为
2001
,但
$(文档)。height()
返回
2668
$('body')[0]。scrollHeight
给我
未定义的


如何通过javascript/jquery获取
2001

您评论中的代码应该有效:

$(document).height() - $(window).height()
下面是一个当您滚动到最大滚动位置时发出警报的示例:

如果您想“猜测”最大滚动顶部值,可能应该比较文档高度和视口高度(窗口大小)


当然,在您的插件中,您还应该在resize事件上添加一个侦听器,并重新计算最大scrollTop。

在vanilla Javascript中,我目前正在执行以下操作:

如果它存在,则返回,否则计算它。我在这里使用的是
document.scrollingElement
,它只存在于特定的浏览器上,但它是。

这是我写的一个答案,它是关于scrollTopMax的polyfill,它是元素对象的本机属性。(仅限mozilla)。看看你的反应,你会很喜欢的

下面只是一个简短的片段。链接中的答案更丰富(请务必查看)

使用示例:

var el = document.getElementById('el1');
var max = el.scrollLeftMax; 

试试这个,简单易行的解决方案

document.body.getBoundingClientRect().bottom;

我想我刚刚发现$(文档)。高度-$(窗口)。高度编号。。。这给了我2011年。救命啊!您是否尝试过
$(document).prop(“滚动高度”),或者如果您的页边距弄乱了内容:
$(文档).outerHeight()-$(窗口).outerHeight()
,或者获取总滚动高度减去窗口高度:
$(文档).prop(“滚动高度”)-$(窗口).outerHeight()
。不。。。第一个是2011年,第二个是NaN…
outerHeight(true)
?呃。。。为什么我有那些额外的10像素(@hjuster Try
outerHeight
两者都可以吗?同样是2011年的outerHeight,没有变化……但无论分辨率如何,差异始终是10px,这实际上是个好消息!你怎么知道应该是2001年?我的示例对你正确吗?@hjuster可能是窗口和文档上带有outerHeight的滚动条高度,这是值得的King,和我的函数一样。试试它!对我来说它不起作用,我总是有那些超自然的额外的10px。你的函数给了我和第一个评论一样的结果,$$(文档)。
(function(elmProto){
    if ('scrollTopMax' in elmProto) {
        return;
    }
    Object.defineProperties(elmProto, {
        'scrollTopMax': {
            get: function scrollTopMax() {
              return this.scrollHeight - this.clientTop;
            }
        },
        'scrollLeftMax': {
            get: function scrollLeftMax() {
              return this.scrollWidth - this.clientLeft;
            }
        }
    });
}
)(Element.prototype);
var el = document.getElementById('el1');
var max = el.scrollLeftMax; 
document.body.getBoundingClientRect().bottom;