【发布时间】:2019-03-02 03:10:02
【问题描述】:
我有类似的 HTML 代码 -
<html>
<body>
<table><tr><td><h1>Heading</h1></td></tr></table>
</body>
</html>
在一个特定的需求中,我需要提前知道这个 HTML 全屏显示需要多少高度。这样我就可以保留专门为该内容计算的那么多空间。
我的想法是在 WebBrowser 控件中渲染这段代码,然后取高度。
this.webBrowser1.Url = new Uri(htmlFilePath);
//The below code will force the webbrowser control to load the HTML in it.
while (this.webBrowser1.Document.Body == null)
{
Application.DoEvents();
}
int height = this.webBrowser1.Document.Body.ScrollRectangle.Height;
但在控制台应用程序中,我无法使用 WebBrowser 控件。有没有其他方法可以做到这一点?
【问题讨论】:
-
您可以查看Headless Browsers,但我不知道如何从他们那里获取布局信息。
-
我不认为你可以用 c# 做到这一点,因为它是服务器端并在渲染完成之前运行 - 如果你需要它,那么你可能不得不在文档完成后将它 ajax渲染
-
您可以在控制台应用程序中使用
WebBrowser控件。见stackoverflow.com/questions/6324810/… -
无头工作非常好。只需将页面高度和宽度设置为合理的数字,加载内容,等待 DOM 完成,然后读取正文高度。
-
@BradleyUffner 哇,非常感谢。它完美地工作。