我不确定我是否可以清楚地解释这一点。
我有一些简单的 HTML 代码并将其加载到 Twebbrowser。然后,我想获取我的 HTML 输出的 Rect,以便我可以适当地重新调整我的 Twebbrowser 的高度。
这就像自动调整大小功能,但它只是自动调整大小的高度。那可能吗?
提前谢谢...
我不确定我是否可以清楚地解释这一点。
我有一些简单的 HTML 代码并将其加载到 Twebbrowser。然后,我想获取我的 HTML 输出的 Rect,以便我可以适当地重新调整我的 Twebbrowser 的高度。
这就像自动调整大小功能,但它只是自动调整大小的高度。那可能吗?
提前谢谢...
You can work out the page height inside TWebBrowser's document complete event, using document.body.scrollWidth and scrollHeight
这段代码应该让你开始:
uses MSHTML, Math;
var
HtmlElement, BodyElement:IHTMLElement2;
PageWidth, PageHeight: Integer;
begin
with WebBrowser1.ControlInterface do
begin
HtmlElement:=(Document as IHTMLDocument3).documentElement as IHTMLElement2;
BodyElement:=(Document as IHTMLDocument2).body as IHTMLElement2;
end;
PageWidth:= Max(BodyElement.scrollWidth, HtmlElement.scrollWidth);
PageHeight:= Max(BodyElement.scrollHeight, HtmlElement.scrollHeight);
end;
我从 HTML 元素和 BODY 元素中读取尺寸并取最大值,因为它们通常具有不同的尺寸。更常见的是其中一个返回大小 0x0。此行为也会从浏览器版本更改为浏览器版本。这是一种解决方法,您必须检查这是否是在您的用例中处理它的正确方法。
注意:@Darkerstar 发布的图片是用于获取元素尺寸的旧 MSDN 插图。更新版本(针对 IE9)似乎是这个:在 Internet Explorer 9 中使用 CSSOM 测量元素尺寸和位置。