そのことについて矛盾するメッセージを得ること、彼らがそうでないことを願っています。膨大な数のサイトで使用されているため、サポートが停止することは想像できません。
それに関するいくつかの追加の質問:
- このタグを段階的に廃止する必要があるのはなぜですか?
- その代わりはありますか?
回答:
私の意見では、W3CはStrict HTMLおよびXHTML Doctypeからiframeをダンプすることで銃を飛び越えました。理論的には、<object>
要素を使用してドキュメントに外部オブジェクトを追加しますが、ブラウザの違いと制限により、多くの開発者にとってこれは初心者ではありません。はるかに実用的なHTML 5(これはまだドラフトです)により、iframeが復活し、2つの新しい属性seamless
(と)が加わりましたsandbox
。
<iframe>
HTML 5にはまだサポートがあるので、これは近い将来変更されるとは思いません。
他の質問に答えるには:
<iframe>
s(一般的にフレームとして)は、ほとんどの場合ユーザーフレンドリーではありません。
<div>
明確にするために:私は話している<iframe>
インタフェース要素として。例えばGoogle Mailのように他のものをロードするための隠し要素ではありません。
iframe はページレイアウトでは廃止されました。優れたCSSレイアウトの代わりにそれらを使用しないでください。テーブルベースのレイアウトの方が優れています。
iframeを使用する理由は次のとおりです。
IFrameは廃止されていませんが、使用する理由はまれです。
iframeを使用する理由:
また、iframeを削除する必要はありません。これは必要なタグであり、しばらくの間存在します。
IFrameの代わりとしてObjectタグを提案する多くのフォーラムを見てきました。これはおそらくほとんどの場合に機能します。
たとえば、IFrameでPDFを表示し(PDF以外にページに表示する必要があるものがあるため)、Objectを使用してそれを正常に表示することができました。
何だった:
<iframe id="confirmed_pdf" class="current_pdf" src="/prescriptions/show_pdf?id=123" height="570" width="480"></iframe>
なりました:
<object id="confirmed_pdf" class="current_pdf" data="/prescriptions/show_pdf?id=123" type="application/pdf" height="570" width="480">
<p>[Show this message if displaying the PDF did not work]</p>
</object>
しかし、Objectは、ページのPDF部分のみを印刷できるという要件を満たすのに適した代替品ではありませんでした。
IFrameはページ内の独自のウィンドウ(基本的にはウィンドウ内のウィンドウ)に似ており、ウィンドウオブジェクトを取得したら、次のように.print()を呼び出すことができます。
jQuery("#confirmed_pdf").contentWindow.print();
IFrameにはcontentWindowプロパティがあります。これにより、その部分のみの印刷が可能になります。オブジェクトにはcontentWindowプロパティがないため、ページのセクションのみを印刷する方法はありません。
したがって、IFrameを使用して何かを表示しているだけの場合、代わりに使用できるObjectのような他のタグがあるようです。ただし、IFrameのコンテンツを特定の方法で操作する必要がある場合は、IFrameが必要になることがあります。
IFrameはAJAXでよく使用されます。たとえば、GMailは9つの非表示のIFrameを使用していると思います。
私の以前の会社では、顧客が自分のWebサイトに統合するホストアプリケーションを提供していました。時々、彼らはIFrameを使用してこれを行い、ホストされたページを既存のデザインに適合させます。これはシームレスに行われることもありました(つまり、IFrameには境界線やスクロールバーがなく、ページの一部のように見えました)。これはタグの良い使い方だと思いました。
状況によっては非常に便利ですが、制限があります。特に、複数のサイトに共通の機能を埋め込む。
たとえば、スコットランドの商品のeコマースサイトを多数運営しているクライアントがいます。この一環として、姓または選択したタータンから希望する氏名を見つけるための簡単なアプリケーションをいくつか開発しました(希望する場合は笑いますが、タータンは私たちの経済にとって年間7億ドルの価値があります)。この背後にあるデータベースは驚くほど大きく(コア名とタータンテーブルの1万行近く)、かなり定期的に更新されています。
したがって、1つのWebサイトで実行するようにアプリケーションを設定し、iframeを使用してこれらを他のWebサイトに埋め込み、タータンまたはクランの選択を埋め込みサイトの機能と統合できるように、簡単なJavaScriptパラメーターの受け渡しを有効にします。iframeはnoborderとして設定されているため、エンドユーザーには完全にシームレスに見えます。
もちろん、これを行う他の方法がありますが、iframeの使用はシンプルで堅牢です。そして、それは確かに時代遅れではありません。
コース用の馬... <iframe>は他のものと同じです...適切な目的のために、それらは適切なツールです。間違った目的のために、彼らは醜いハック、またはさらに悪いことです。
Ajaxでは、多くの場合<div>がより適切なコンテナーです。一部の場所では、<iframe>でサポートされているように、自分のサイトの一部として外部コンテンツを渡す行為は不適切です。
私のチームは、HTMLメールの履歴にユーザーがアクセスできるようにする理想的な方法として、先日<iframe>を使用しました。メールは、Webテンプレートに簡単に挿入したい完全な<html>ページでした。<iframe>は、そのデータを表示するのに最適でした。
一方、<iframe>は、ほとんどの場合、サイトに出力されるユーザー送信コンテンツでは削除または無効にする必要があります。そのコンテキストでは、それらは主要なセキュリティ問題であるためです。
現在、Googleガジェットの仕様はiframeに依存しています:http : //code.google.com/apis/gadgets/docs/spec.html
現在、複数のドメイン/プロバイダーからプルされるJavaScriptアプリを分離するための唯一の簡単な方法です。
また、サードパーティからウェブサイトに埋め込まれているウィジェットの多くはiframeを使用しています。
iframeには欠点もありますが、Web上の一般的な問題に対する実用的なソリューションを提供します。私は彼らが来てしばらくの間存在することを推測する必要があります。