访问托管 HTML 文档对象模型中的框架

某些 HTML 文档由 框架或窗口组成,这些窗口可以保存其自己的不同 HTML 文档。 使用框架可以轻松创建 HTML 页面,其中一个或多个页面片段保持静态,例如导航栏,而其他框架会不断更改其内容。

HTML 作者可以通过以下两种方式之一创建框架:

  • 使用 FRAMESETFRAME 标签来创建固定窗口。

-或-

  • IFRAME使用标记创建可在运行时重新定位的浮动窗口。
  1. 由于框架包含 HTML 文档,因此它们以窗口元素和框架元素的形式在文档对象模型(DOM)中表示。

  2. 当您使用HtmlWindow的 Frames 集合来访问FRAMEIFRAME标记时,即在检索与该框架对应的窗口元素。 这表示框架的所有动态属性,例如其当前 URL、文档和大小。

  3. 当您使用HtmlWindowWindowFrameElement属性、Children集合或如GetElementsByNameGetElementById的方法来访问FRAMEIFRAME标记时,您正在检索框架元素。 这表示框架的静态属性,包括原始 HTML 文件中指定的 URL。

帧和安全性

由于托管 HTML DOM 实现了称为 跨帧脚本安全性的安全措施,因此对帧的访问非常复杂。 如果文档包含一个FRAMESET,并且在不同域中有两个或更多FRAME,则这些FRAME无法相互交互。 换句话说, FRAME 显示网站中的内容无法访问托管第三方网站的信息 FRAME ,例如 http://www.adatum.com/。 此安全性在类级别 HtmlWindow 实现。 可以获取有关托管另一网站的FRAME的常规信息,例如其 URL,但您将无法访问Document,也不能更改其托管的FRAMEIFRAME的大小或位置。

此规则也适用于使用OpenOpenNew方法打开的窗口。 如果打开的窗口与控件中 WebBrowser 托管的页面位于不同的域中,则无法移动该窗口或检查其内容。 如果使用 WebBrowser 控件显示与用于部署基于 Windows 窗体的应用程序的网站不同的网站,也会强制实施这些限制。 如果使用 ClickOnce 部署技术从网站 A 安装应用程序,并且使用该 WebBrowser 技术显示网站 B,则无法访问网站 B 的数据。

另请参阅