[轉自] http://hi.baidu.com/zonesky/blog/item/d8b89e1b66329ed3ac6e7517.html
利用
webBrowser
獲取頁面比較簡單,MSDN下有示例,在這里不必多說。
可是一些 HTML 文檔由“框架”構成,或可以存放它們自己獨特 HTML 文檔的窗口。使用框架可以輕松地創建 HTML 頁面,其中一頁或多頁在其他框架持續更改它們內容的同時保持靜態,例如導航欄。
HTML 作者可以采用以下兩種方法之一創建框架:
- 或 -
-
使用 IFRAME 標記,創建可以在運行時重新放置的浮動窗口。
-
因為框架包含 HTML 文檔,它們在文檔對象模型 (DOM) 中表示為窗口元素和框架元素。
-
當通過使用 HtmlWindow 的框架集合訪問 FRAME 或 IFRAME 標記時,也就是檢索對應于此框架的窗口元素。這里指框架的所有動態屬性,例如它的當前 URL、文檔和大小。
-
使用 HtmlWindow 、 Children 集合或 GetElementsByName 或 GetElementById 等方法的 WindowFrameElement 屬性訪問 FRAME 或 IFRAME 標記時,也就是在檢索框架元素。這里指框架的靜態屬性,包括原始 HTML 文件中指定的 URL。
框架和安全
對框架的訪問因為托管 HTML DOM 實施稱為“跨框架腳本撰寫安全”的安全措施的事實而比較復雜。如果文檔包含的 FRAMESET 中的兩個或多個 FRAME 在不同域中,這些 FRAME 互相之間不能交互。換言之,顯示網站內容的 FRAME 無法訪問承載第三方站點(例如 http://www.adatum.com/)的 FRAME 中的信息。在 HtmlWindow 類級別實現這種安全。可以獲取關于承載另一個網站的 FRAME 的一般信息(例如它的 URL),但無法訪問它的 Document 或更改它的宿主 FRAME 或 IFRAME 的大小或位置。
此規則也適用于使用 Open 和 OpenNew 方法打開的窗口。如果您打開的窗口所在域不同于在 WebBrowser 控件中承載的頁面的域,您將無法移動該窗口或檢查它的內容。當您使用 WebBrowser 控件顯示一個與部署基于 Windows 窗體的應用程序所用網站不同的網站時,也將強制執行這些限制。如果使用 ClickOnce 部署技術從網站 A 安裝應用程序,而使用 WebBrowser 顯示網站 B,您將無法訪問網站 B 的數據。
有關跨站點腳本撰寫的更多信息,請參見 About Cross- Frame Scripting and Security(關于跨框架腳本撰寫和安全) (http://msdn.microsoft.com/library/default.asp?url=/workshop/author/om/xframe_scripting_security.asp)。
請參見
其他資源
使用托管 HTML 文檔對象模型FRAME 元素 | frame 對象
1.獲取 frame 的源文件
MessageBox.Show( webBrowser 1.Document.Window.Frames["main"].Document.Body.InnerHtml);
2.獲取 frame 的HTMLDocument接口
HTMLDocument doc = (HTMLDocument)
webBrowser
1.Document.DomDocument;
object j;
for (int i = 0; i < 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) webBrowser 1.Document.Window.Frames["main"].Document.DomDocument;
4.取得 frame 中被點擊的連接
private void
webBrowser
1_Navigating(object sender, WebBrowserNavigatingEventArgs e)
{
????? string url =
webBrowser
1.Document.Window.Frames["main"].Document.ActiveElement.GetAttribute("src");
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
