获取WebBrowser控件的正确页面高度

时间:2015-12-15 11:28:15

标签: javascript c# html

我需要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。这种不一致就是抛弃了我写过的自定义滚动条。

1 个答案:

答案 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");