web-dev-qa-db-ja.com

HTML5ではフレームが廃止されたが、iFrameは廃止されなかったのはなぜですか?

HTML5ではフレームが廃止されたが、iFrameは廃止されなかったのはなぜですか?結局のところ、両者の間にほとんど違いはありません。多くの場合、どちらかを使用すると同じ出力が得られます(間違っている場合はご容赦ください)?

68
user52009

投稿にはいくつかの誤解があります。まず、frame要素とframeset要素はHTML5では非推奨ではありません。これらは 廃止 です(つまり、完全に削除されています)。

次に、frame要素とframeset要素はiframe要素と同じではなく、同じ出力も提供しません。

  • frameset要素は、Webページの異なるドキュメントモデルを含めるための手段として、ページのbody要素を置き換えます。これらは、使いやすさとアクセシビリティに悪影響を及ぼし、達成するつもりであったものがCSSとユビキタスに完全に置き換えられましたサーバーサイド開発。

  • 一方、iframe要素は、ページの本文を置き換えません。コンテンツのブロック内に埋め込まれた新しいブラウジングコンテキストを含める手段として機能します。フレームセットモデルと同じ使いやすさやアクセシビリティの問題がなく、組み込みのブラウジングコンテキストを組み込む必要があるほとんどすべての場所で使用されます(ウィジェットが最も多用な例です)。1

HTML5のiframesandboxed できるという点で追加機能を備えており、親ドキュメントがその中で実行するものを決定できます。これにより、信頼できないコンテンツを埋め込むときに、親ドキュメント(および親ドキュメントへの訪問者)のセキュリティをある程度確保できます。


ノート

注1: object要素はiframe要素と多少重複していますが、コンテンツモデルが異なり(主にプラグインを対象としています)、独自の警告セットがあり、サンドボックスがありません。 iframe要素が持つ属性。

81
user8

フレームセットは、Webの基本原則(各ドキュメントに単一のURLがある)を破るような方法で使用されることがよくあります。これにより、リンク、ブックマーク、検索エンジンなどで問題が発生します。

フレームセットの一般的な使用方法は、ロゴまたはヘッダーが付いた上部のフレーム、メニューが付いた側面のフレーム、およびコンテンツフレームです。ただし、検索エンジンは個々のページにインデックスを付けるため、Googleでページを見つけると、フレームセットなしでコンテンツページに直接リンクするため、ナビゲーションが失われます。リンクとブックマークの問題は、通常、フレームセット自体を失うことなく、フレームセット内の特定のコンテンツページをリンクまたはブックマークすることです。これを行う簡単な方法はありません。

フレームセットが最初に人気になった理由は、静的に配置されたヘッダーとメニューをスクロール可能なコンテンツ領域で許可したためです。しかし、それは今日のCSSではるかに簡単に達成できます。さらに、フレームを使用すると、サーバー側のコーディングを使用せずに、ロゴやメニューなどの一般的な要素を複数のページで使用できます。これは、サーバー側のコーディングが面倒でエラーが発生しやすい(CGIスクリプトなど)ときに有利であり、多くのホストはサーバー側のスクリプトをまったく許可していませんでした。現在、コンテンツ管理システム(CMS)とより優れたサーバー側プラットフォームにより、これはサーバー側でより適切に処理されます。

したがって、基本的にフレームセットを使用する利点はなく、多くの問題があります。

IFrames canは、フレームセットが使用されたのと同じ方法で使用され、その場合、同じ問題が発生します。しかし、同じ問題につながらないiframeの正当な使用法も数多くあります。

8
JacquesB

フレーム(フレームセット)はドキュメントとして機能します。 HTML文書の構造とナビゲーションを壊すため、削除されました。例えば。 1つのフレームにリンクがあり、もう1つのフレームにコンテンツがあり、ページからのリンクを新しいウィンドウで開くことができない、特定のサブページにリンクできないなど。

一方、iframeは、サンドボックスコンテンツ(広告など)を対象としているため、正しく使用しても何も壊れません。

8
Slawek