某些 HTML 文件包含「框架」(frame),也就是可以自行保存相異 HTML 文件的視窗。 使用框架可讓您輕鬆地建立 HTML 網頁,該 HTML 網頁的其中一個或多個頁面片段維持靜態,例如導覽列,而其他框架則不斷變更其內容。
HTML 作者可以用兩種方法之一來建立框架:
- 使用
FRAMESET和FRAME標記,這會建立固定的視窗。
-或-
- 使用
IFRAME標記,這會建立可以在執行階段中重新定位的浮動視窗。
因為框架包含 HTML 文件,它們會在文件物件模型 (DOM) 中顯示為視窗項目和框架項目。
當您使用 HtmlWindow 的框架集合存取
FRAME或IFRAME標記時,您會擷取對應至框架的視窗項目。 這代表框架的所有動態屬性,例如其目前的 URL、文件及大小。當您使用 HtmlWindow 的 WindowFrameElement 屬性、Children 集合,或例如 GetElementsByName 或 GetElementById 等方法存取
FRAME或IFRAME標記時,您會擷取框架項目。 這代表框架的靜態屬性,包括在原始 HTML 檔案中指定的 URL。
框架和安全性
框架的存取會因為受控 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 的資料。