[轉(zhuǎn)自] http://hi.baidu.com/zonesky/blog/item/d8b89e1b66329ed3ac6e7517.html
利用
webBrowser
獲取頁面比較簡單,MSDN下有示例,在這里不必多說。
可是一些 HTML 文檔由“框架”構(gòu)成,或可以存放它們自己獨(dú)特 HTML 文檔的窗口。使用框架可以輕松地創(chuàng)建 HTML 頁面,其中一頁或多頁在其他框架持續(xù)更改它們內(nèi)容的同時保持靜態(tài),例如導(dǎo)航欄。
HTML 作者可以采用以下兩種方法之一創(chuàng)建框架:
- 或 -
-
使用 IFRAME 標(biāo)記,創(chuàng)建可以在運(yùn)行時重新放置的浮動窗口。
-
因?yàn)榭蚣馨?HTML 文檔,它們在文檔對象模型 (DOM) 中表示為窗口元素和框架元素。
-
當(dāng)通過使用 HtmlWindow 的框架集合訪問 FRAME 或 IFRAME 標(biāo)記時,也就是檢索對應(yīng)于此框架的窗口元素。這里指框架的所有動態(tài)屬性,例如它的當(dāng)前 URL、文檔和大小。
-
使用 HtmlWindow 、 Children 集合或 GetElementsByName 或 GetElementById 等方法的 WindowFrameElement 屬性訪問 FRAME 或 IFRAME 標(biāo)記時,也就是在檢索框架元素。這里指框架的靜態(tài)屬性,包括原始 HTML 文件中指定的 URL。
框架和安全
對框架的訪問因?yàn)橥泄?HTML DOM 實(shí)施稱為“跨框架腳本撰寫安全”的安全措施的事實(shí)而比較復(fù)雜。如果文檔包含的 FRAMESET 中的兩個或多個 FRAME 在不同域中,這些 FRAME 互相之間不能交互。換言之,顯示網(wǎng)站內(nèi)容的 FRAME 無法訪問承載第三方站點(diǎn)(例如 http://www.adatum.com/)的 FRAME 中的信息。在 HtmlWindow 類級別實(shí)現(xiàn)這種安全。可以獲取關(guān)于承載另一個網(wǎng)站的 FRAME 的一般信息(例如它的 URL),但無法訪問它的 Document 或更改它的宿主 FRAME 或 IFRAME 的大小或位置。
此規(guī)則也適用于使用 Open 和 OpenNew 方法打開的窗口。如果您打開的窗口所在域不同于在 WebBrowser 控件中承載的頁面的域,您將無法移動該窗口或檢查它的內(nèi)容。當(dāng)您使用 WebBrowser 控件顯示一個與部署基于 Windows 窗體的應(yīng)用程序所用網(wǎng)站不同的網(wǎng)站時,也將強(qiáng)制執(zhí)行這些限制。如果使用 ClickOnce 部署技術(shù)從網(wǎng)站 A 安裝應(yīng)用程序,而使用 WebBrowser 顯示網(wǎng)站 B,您將無法訪問網(wǎng)站 B 的數(shù)據(jù)。
有關(guān)跨站點(diǎn)腳本撰寫的更多信息,請參見 About Cross- Frame Scripting and Security(關(guān)于跨框架腳本撰寫和安全) (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 中被點(diǎn)擊的連接
private void
webBrowser
1_Navigating(object sender, WebBrowserNavigatingEventArgs e)
{
????? string url =
webBrowser
1.Document.Window.Frames["main"].Document.ActiveElement.GetAttribute("src");
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元

