是否有一个函数让客户端在Twebbrowser内部?

时间:2011-07-28 02:35:49

标签: html delphi resize twebbrowser

我不确定我是否可以清楚地解释这一点。

我有一些简单的HTML代码,并将其加载到Twebbrowser。然后,我想得到我的HTML输出的Rect,以便我可以正确调整我的Twebbrowser的高度。

这就像自动调整大小一样,但它只是自动调整大小的高度。 那可能吗?

提前预定...

2 个答案:

答案 0 :(得分:2)

您可以使用document.body.scrollWidth和scrollHeight

在TWebBrowser的文档完成事件中计算页面高度

IE6 clientHeight etc

答案 1 :(得分:2)

此代码可以帮助您入门:

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)似乎是这个:Measuring Element Dimension and Location with CSSOM in Internet Explorer 9