WebBrowser获取页面大小

时间:2018-08-01 17:21:56

标签: c# wpf webbrowser-control

在IE 9及更高版本上使用WebBrowser时

webBrowser.Document.Body.ScrollRectangle.Size

始终返回250 x 250作为主体尺寸。 因此,我无法找到一种检查当前页面大小的方法。

如何使用IE 9及更高版本检查html页面的实际大小?

2 个答案:

答案 0 :(得分:0)

这应该为您提供窗口大小

webBrowser.Document.Window.Size

答案 1 :(得分:0)

我找到了直到现在一直可以使用的解决方案。

我希望它可以解决与我同样的问题,就像您在IE 9或更高版本中可能发现的那样,Body元素包含ScrollRectangle属性的默认大小,但是,正如我发现的那样,其他元素确实包含具有不同大小的ScrollRectangle属性。

可以肯定的是,HTML元素包含正确的ScrollRectangle属性,但其他一些元素可能包含大小更大或更小的ScrollRectangle,有时更合适。

所以我得出一个结论,检查ScrollRectangle属性的所有元素是最聪明的事情,这是脚本:

int
    CurrentWidth
    , CurrentHeight
    , CurrentMinWidth = WebBrowserOuterPanel.Width
    , CurrentMaxWidth = 0
    , CurrentMinHeight = WebBrowserOuterPanel.Height
    , CurrentMaxHeight = 0;

foreach(HtmlElement webBrowserElement in webBrowser.Document.All)
{
    if ((CurrentWidth = Math.Max(webBrowserElement.ClientRectangle.Width, webBrowserElement.ScrollRectangle.Width)) > CurrentMaxWidth)
        CurrentMaxWidth = CurrentWidth;

    if ((CurrentHeight = Math.Max(webBrowserElement.ClientRectangle.Height, webBrowserElement.ScrollRectangle.Height)) > CurrentMaxHeight)
        CurrentMaxHeight = CurrentHeight;
}

webBrowser.Size = new Size (CurrentMaxWidth > CurrentMinWidth ? CurrentMaxWidth : CurrentMinWidth, CurrentMaxHeight > CurrentMinHeight ? CurrentMaxHeight : CurrentMinHeight);

以另一种方式实现,但可能不正确

HtmlElement webBrowserElement = webBrowser.Document.Body.FirstChild;

CurrentMaxWidth = Math.Max(webBrowserElement.ClientRectangle.Width, webBrowserElement.ScrollRectangle.Width);

CurrentMaxHeight = Math.Max(webBrowserElement.ClientRectangle.Height, webBrowserElement.ScrollRectangle.Height);