获取WebBrowser控件的正确页面高度
本文关键字:高度 WebBrowser 控件 获取 | 更新日期: 2023-09-27 18:26:54
我需要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
位置添加到控件height
会产生相同的值。
webBrowser1.Document.GetElementsByTagName("HTML")[0].ScrollTop + webBrowser1.Height;
对于我的特殊情况,C#返回510的高度,而JS返回529的正确高度。这种不一致性使我编写的自定义滚动条脱落。
如果您有权访问页面的代码,那么您可以将问题中的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");