一部の HTML ドキュメントは、フレーム、つまり独自の個別 HTML ドキュメントを持つウィンドウで構成されます。 フレームを使用すると、ページ内に静的な部分 (ナビゲーション バーなど) を 1 つ以上含み、その他のフレームでは内容が常に変化するような HTML ページを簡単に作成できます。
HTML では、次のいずれかの方法でフレームを作成できます。
- FRAMESET タグと FRAME タグを使用して、固定ウィンドウを作成する。
または
- IFRAME タグを使用して、実行時に移動できるフローティング ウィンドウを作成する。
フレームは HTML ドキュメントを含むため、DOM (Document Object Model) においてはウィンドウ要素およびフレーム要素として表されます。
HtmlWindow の Frames コレクションを使用して FRAME タグまたは IFRAME タグにアクセスすると、フレームに対応するウィンドウ要素が取得されます。 これは、現在の URL、ドキュメント、サイズなど、フレームのすべての動的プロパティを表します。
HtmlWindow の WindowFrameElement プロパティ、Children コレクション、または GetElementsByName や GetElementById などのメソッドを使用して FRAME タグまたは IFRAME タグにアクセスすると、フレーム要素が取得されます。 これは、元の HTML ファイルに指定されている URL を含む、フレームの静的プロパティを表します。
フレームとセキュリティ
フレームへのアクセスが複雑なのは、マネージ HTML DOM がフレーム間スクリプト セキュリティと呼ばれるセキュリティ対策を実装していることによります。 異なるドメイン内に複数の FRAME を持つ FRAMESET がドキュメントに含まれる場合、これらの FRAME は相互にやり取りできません。 つまり、Web サイトのコンテンツを表示する FRAME は、サードパーティのサイト (http://www.adatum.com/ など) をホストする FRAME 内の情報にアクセスできません。 このセキュリティは、HtmlWindow クラスのレベルで実装されます。 別の Web サイトをホストする FRAME に関する一般情報 (URL など) は取得できますが、Web サイトの Document へのアクセスや、ホストしている FRAME または IFRAME のサイズや位置の変更はできません。
この規則は、Open メソッドおよび OpenNew メソッドを使用して開くウィンドウにも適用されます。 開いているウィンドウが WebBrowser コントロール内でホストされているページとは異なるドメインにある場合、そのウィンドウを移動したり、内容をチェックしたりできません。 このような制限は、WebBrowser コントロールを使用して、Windows フォーム ベースのアプリケーションの配置に使用した Web サイトとは異なる Web サイトを表示する場合にも適用されます。 ClickOnce 配置テクノロジを使用して Web サイト A からアプリケーションをインストールし、WebBrowser を使用して Web サイト B を表示した場合、Web サイト B のデータにアクセスできません。
クロスサイト スクリプティングの詳細については、「About Cross-Frame Scripting and Security (フレーム間スクリプトとセキュリティについて)」を参照してください。