jQuery返回错误的文档高度

时间:2014-01-15 08:00:35

标签: javascript jquery css cocoa

我在Cocoa(Mac)中使用Webview,我正在尝试获取文档的正确高度。只做正常的事情,webview.mainFrame.frameView.documentView.bounds.size.height似乎在所有情况下都能正常工作,除了我刚发现的那个:

http://www.medium.com 即可。

当我在这个网站上尝试这样做时,我得到的文件高度大约为500,当真正的文档高度更像是2000+时,因为我必须滚动几个屏幕才能到达终点。

我尝试使用webview中的javascript来评估实际高度,使用的方法类似于此处列出的方法:How to get height of entire document with JavaScript?

但是这些也给出了非常不正确的值,就像我最初的做法一样。甚至去那个页面,加载jQuery,然后像$(document.body).height()这样的东西给出一个非常不正确的值。有谁知道发生了什么?是否有其他方法可以使文档高度可靠?

我注意到检查员在镀铬中报告的高度也变得混乱。在这些屏幕截图中,您可以看到报告的document.body高度小于其子节点之一的高度。

medium.com body height in chrome inspector medium.com body->child div height in chrome inspector

7 个答案:

答案 0 :(得分:9)

此页面的内容如下:

HTML和Body(以及一些底层元素)都设置为100%高度,因此它们完全适合浏览器窗口。在我的情况下,大约500像素高。他们如何建立这种滚动呢?嗯...有一个溢出的div:auto和实际内容更多(大约4000px)

所以你实际上并没有滚动整个页面,而是这个特定的div(检查布局 - 前景滚动区域)

在这种情况下,文件的高度为500px是完全正确的,您可以通过控制台以这种方式找到您要找的高度:

document.querySelectorAll(".scrolling-region")[0].scrollHeight

这将给你4133px的高度,在这种情况下,它是页面的实际高度。

干杯:)

答案 1 :(得分:2)

看起来html,body{height:100%}.screen-scroll,.screen-scroll>body{overflow:hidden}让你感到烦恼。如果您将它们都设置为height:100%并将正文设置为overflow:hidden,则html和正文将具有相同的100%高度而不会overflow,这将使{{1}高度与document高度相同。

所以可能实际上你正在寻找window的高度总和,这更像是header, nav, and .background-white而不是你现在得到的4222

类似这样的事情:

500

答案 2 :(得分:1)

我认为你得到的是window.innerWidth / Height而不是整个文档。

试试这个。

document.body.offsetHeight

我在一个随机网页上试了一下,得到了+8000像素,接着是正确的。我的窗口高度只有590(控制台打开了)。

希望它有所帮助。

  • 莫尔

答案 3 :(得分:0)

var D = document;
        var docHeight = Math.max(
        Math.max(D.body.scrollHeight, D.documentElement.scrollHeight),
        Math.max(D.body.offsetHeight, D.documentElement.offsetHeight),
        Math.max(D.body.clientHeight, D.documentElement.clientHeight)
    );

var height1= $(window).height(),
    height= $(document).height();

希望这有帮助。

答案 4 :(得分:0)

在页面加载之前等待怎么样? $(文件)。就绪(函数(){...});

我在Chrome中遇到同样的问题。在一个站点上,有必要用js调整两列的高度。当我单击F5时,其中一列具有不同的高度,请使用$(document).ready

进行修复

答案 5 :(得分:0)

这是在所有浏览器上发生的,还是只是Chrome?

在1/15,Chrome更新了他们的浏览器,这改变了一些值得注意的事情,但其中一个与计算浏览器窗口/视口有关。这是帖子,也许它会有所帮助:http://blogs.telerik.com/jefffritz/posts/14-01-17/chrome-updated-scrollTop

答案 6 :(得分:0)

我也面临同样的问题。经过一整天的努力,我意识到了这一点,但是如果我在window.onload中调用语句,它会返回正确的高度。