在IE 9及更高版本上使用WebBrowser时
webBrowser.Document.Body.ScrollRectangle.Size
始终返回250 x 250作为主体尺寸。 因此,我无法找到一种检查当前页面大小的方法。
如何使用IE 9及更高版本检查html页面的实际大小?
答案 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);