【问题标题】:Is there a function to get the client rect inside the Twebbrowser?是否有在 Twebbrowser 中获取客户端 rect 的功能?
【发布时间】:2011-07-28 02:35:48
【问题描述】:

我不确定我能否解释清楚。

我有一些简单的 HTML 代码并将其加载到 Twebbrowser。然后,我想获取我的 HTML 输出的 Rect,以便我可以适当地重新调整 Twebbrowser 的高度。

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

提前谢谢...

【问题讨论】:

  • 如果是您的 HTML 代码,那么您可以编写一个 Javascript 函数,然后使用 Delphi 中的函数。
  • 注意:调整浏览器的大小会改变页面布局以及文档的宽度和高度。根据您的用例,这可能是不可取的。

标签: html delphi resize twebbrowser


【解决方案1】:

此代码应该可以帮助您入门:

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

【讨论】:

    【解决方案2】:

    您可以在 TWebBrowser 的文档完成事件中计算页面高度,使用 document.body.scrollWidth 和 scrollHeight

    【讨论】:

      猜你喜欢
      • 2016-06-28
      • 2022-06-22
      • 1970-01-01
      • 2018-06-10
      • 1970-01-01
      • 2017-11-28
      • 2022-12-15
      • 2012-08-06
      相关资源
      最近更新 更多