我需要WebBrowser控件的正确页面高度。
在Javascript中,这有效:
var body = document.body;
var html = document.documentElement;
var height = Math.max( body.scrollHeight, body.offsetHeight, html.clientHeight, html.scrollHeight, html.offsetHeight );
SO上存在重复的问题,建议采用以下方法:
webBrowser.Document.Body.ScrollRectangle.Height;
webBrowser.Document.GetElementsByTagName("body")[0].OffsetRectangle.Bottom;
webBrowser.Document.GetElementsByTagName("body")[0].OffsetRectangle.Height;
除非没有返回与JS代码相同的值。
我对JS值错误的可能性持开放态度,但我相信它是正确的,因为滚动到页面底部并将ScrollTop
位置添加到控件{{1}产生相同的值。
height
对于我的特殊情况,C#返回510的高度,而JS返回正确的高度,529。这种不一致就是抛弃了我写过的自定义滚动条。
答案 0 :(得分:2)
如果您可以访问该页面的代码,那么您可以将问题中的Javascript添加到该页面,然后从Webbrowser调用它并检索结果。
<强> HTML 强>
<html>
<head>
<script>
function GetPageHeight()
{
var body = document.body;
var html = document.documentElement;
var height = Math.max( body.scrollHeight, body.offsetHeight, html.clientHeight, html.scrollHeight, html.offsetHeight );
return height;
}
</script>
</head>
<body>
Test
</body>
</html>
<强> C#强>
int height = (int)webBrowser1.Document.InvokeScript("GetPageHeight");