我在Cocoa(Mac)中使用Webview,我正在尝试获取文档的正确高度。只做正常的事情,webview.mainFrame.frameView.documentView.bounds.size.height
似乎在所有情况下都能正常工作,除了我刚发现的那个:
当我在这个网站上尝试这样做时,我得到的文件高度大约为500,当真正的文档高度更像是2000+时,因为我必须滚动几个屏幕才能到达终点。
我尝试使用webview中的javascript来评估实际高度,使用的方法类似于此处列出的方法:How to get height of entire document with JavaScript?
但是这些也给出了非常不正确的值,就像我最初的做法一样。甚至去那个页面,加载jQuery,然后像$(document.body).height()这样的东西给出一个非常不正确的值。有谁知道发生了什么?是否有其他方法可以使文档高度可靠?
我注意到检查员在镀铬中报告的高度也变得混乱。在这些屏幕截图中,您可以看到报告的document.body高度小于其子节点之一的高度。
答案 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中调用语句,它会返回正确的高度。