天天看点

利用webBrowser获取框架内Html页面内容框架和安全请参见

利用webBrowser获取页面比较简单,MSDN下有示例,在这里不必多说。

可是一些 HTML 文档由“框架”构成,或可以存放它们自己独特 HTML 文档的窗口。使用框架可以轻松地创建 HTML 页面,其中一页或多页在其他框架持续更改它们内容的同时保持静态,例如导航栏。

HTML 作者可以采用以下两种方法之一创建框架:

使用 FRAMESET 和 FRAME 标记,创建固定窗口。

- 或 -

使用 IFRAME 标记,创建可以在运行时重新放置的浮动窗口。

因为框架包含 HTML 文档,它们在文档对象模型 (DOM) 中表示为窗口元素和框架元素。

<a href="http://msdn2.microsoft.com/zh-cn/library/ms171711.aspx">使用托管 HTML 文档对象模型</a>

<a href="http://msdn.microsoft.com/library/default.asp?url=/workshop/author/dhtml/reference/objects/frame.asp">FRAME 元素 | frame 对象</a>

1.获取frame的源文件

MessageBox.Show(webBrowser1.Document.Window.Frames["main"].Document.Body.InnerHtml);

2.获取frame的HTMLDocument接口

HTMLDocument doc = (HTMLDocument)webBrowser1.Document.DomDocument;

object j;

for (int i = 0; i &lt; doc.parentWindow.frames.length; i++)

{

       j = i;

       HTMLWindow2Class frame = doc.parentWindow.frames.item(ref j) as HTMLWindow2Class;

       if (frame.name == "main")

        {                   

              MessageBox.Show(frame.document.title);                    

        }

}      

3.获取frame的IHTMLDocument2接口

IHTMLDocument2 doc = (IHTMLDocument2)webBrowser1.Document.Window.Frames["main"].Document.DomDocument;

4.取得frame中被点击的连接

private void webBrowser1_Navigating(object sender, WebBrowserNavigatingEventArgs e)

      string url = webBrowser1.Document.Window.Frames["main"].Document.ActiveElement.GetAttribute("src");

}

继续阅读