Twebbrowser 中有没有获取客户端矩形的函数?

发布于 2024-11-26 23:24:29 字数 172 浏览 2 评论 0原文

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

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

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

提前谢谢...

I'm not sure if I can explain this clearly.

I have some simple HTML code and am loading it to the Twebbrowser. Then, I want to get the Rect of my HTML output so that i could proper re-size the height of my Twebbrowser.

It's like auto-size feature, but it's only the height that auto-size.
is that possible?

thanx in advance...

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

穿透光 2024-12-03 23:24:29

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

IE6 clientHeight etc

You can work out the page height inside TWebBrowser's document complete event, using document.body.scrollWidth and scrollHeight

IE6 clientHeight etc

余生再见 2024-12-03 23:24:29

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

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 测量元素尺寸和位置

This code should get you started:

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;

I read the dimensions both from the HTML element and the BODY element and take the maximum because often they have different dimensions. And even more often one of them returns size 0x0. This behavior also changes from browser version to browser version. It's a workaround, you have to check if this is the right way to deal with it in your use case.

Note: the image @Darkerstar posted was the old MSDN illustration for getting element dimensions. The updated version (for IE9) seems to be this one: Measuring Element Dimension and Location with CSSOM in Internet Explorer 9.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文