存取 Managed HTML 文件物件模型中的框架
有些 HTML 文件是由「框架」(Frame) 或視窗組成,此二者可保留各自不同的 HTML 文件。 使用框架可以很容易地建立 HTML 網頁,網頁中會有一或多個部分是維持靜態 (例如巡覽列),而其他框架則不斷地變更內容。
HTML 作者可採用兩種方式的其中一種來建立框架:
- 使用 FRAMESET 和 FRAME 標記,可建立固定視窗。
-或-
- 使用 IFRAME 標記可建立浮動視窗,這種視窗可在執行階段重新調整位置。
因為框架包含 HTML 文件,所以此文件和視窗項目、框架項目一樣,是在文件物件模型 (DOM) 中顯示。
當使用 HtmlWindow 的 Frames 集合來存取 FRAME 或 IFRAME 標記時,就是在擷取對應至框架的視窗項目。 也就是框架的所有動態屬性,例如目前 URL、文件和大小。
當您使用 HtmlWindow、Children 集合或方法 (例如 GetElementsByName 或 GetElementById) 的 WindowFrameElement 屬性來存取 FRAME 或 IFRAME 標記時,就是在擷取框架項目。 這也就是框架的靜態屬性,包括原始 HTML 檔中所指定的 URL。
框架和安全性
由於 Managed HTML DOM 會實作安全性措施,也就是所謂的「跨框架指令碼安全性」(Cross-Frame Scripting Security),這使得框架的存取變得複雜。 如果文件中包含一個 FRAMESET 並且有二個以上 FRAME 位於不同網域中,那麼這些 FRAME 將無法彼此互動。 換言之,FRAME 如果顯示網站上的內容,則它就無法存取裝載其他協力廠商網站 (例如 http://www.adatum.com/) 之 FRAME 內的資訊。 這個安全性是在 HtmlWindow 類別的層級上實作的。 您可以取得裝載其他網站之 FRAME 的一般資訊 (例如網站的 URL),但是無法存取該網站的 Document 或變更其裝載 FRAME 或 IFRAME 的大小或位置。
這項規則也適用於以 Open 和 OpenNew 方法開啟的視窗。 如果開啟的視窗其網域不同於 WebBrowser 控制項中所裝載的網頁,您將無法移動該視窗或檢查其內容。 如果 WebBrowser 控制項所顯示的網站不同於在部署 Windows Form 架構之應用程式時所使用的網站,這些限制也會強制執行。 如果使用 ClickOnce 部署技術從網站 A 安裝應用程式,並且使用 WebBrowser 來顯示網站 B,那麼將無法存取網站 B 的資料。
如需跨站台指令碼的詳細資訊,請參閱關於跨框架的指令碼和安全性 (英文)。