それについて矛盾したメッセージを受け取って、そうでないことを願っています。膨大な数のサイトがそれらを使用しているので、それに対するサポートが停止することは想像できません。
それに関するいくつかの追加の質問:
- なぜ彼らはこのタグを段階的に廃止する必要があるのですか?
- それに代わるものはありますか?
のサポート<iframe>
はまだHTML5で行われているので、近い将来変更されることはないと思います。
他の質問に答えるには:
<iframe>
■(一般にフレームとして)ほとんどの場合、ユーザーフレンドリーではありません。
<div>
<iframe>
明確にするために:私はインターフェース要素として話している。たとえばGoogleMailのように、他のものをロードするための隠された要素ではありません。
私の意見では、W3Cは、StrictHTMLおよびXHTMLDoctypesからiframeをダンプすることに飛びつきました。理論的には、この<object>
要素を使用してドキュメントに外部オブジェクトを追加しますが、ブラウザーの違いと制限により、これは多くの開発者にとって初心者ではありません。はるかに実用的なHTML5(まだドラフトです)で、iframeが復活し、2つの新しい属性があります:seamless
と興味をそそるsandbox
。
IFrameは廃止されていませんが、使用する理由はまれです。
iframeを使用する理由:
また、iframeを削除する必要はありません。これは必要なタグであり、しばらくの間使用されます。
Iframeはページレイアウトでは廃止されました。優れたCSSレイアウトの代わりにそれらを使用しないでください。テーブルベースのレイアウトでさえ優れています。
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>
しかし、オブジェクトは、ページのPDF部分のみを印刷できるという要件を満たすための適切な代替品ではありませんでした。
IFrameは、ページ内の独自のウィンドウ(基本的にはウィンドウ内のウィンドウ)のようなものであり、ウィンドウオブジェクトを取得したら、次のように.print()を呼び出すことができます。
jQuery("#confirmed_pdf").contentWindow.print();
IFrameにはcontentWindowプロパティがあり、それによってその部分のみを印刷できます。オブジェクトにはcontentWindowプロパティがないため、ページのセクションのみを印刷する方法はありません。
したがって、IFrameを使用して何かを表示している場合は、代わりにObjectなどの他のタグを使用できるようです。ただし、特定の方法でIFrameのコンテンツを操作する必要がある場合は、IFrameが必要になることがあります。
IFrameはAJAXでよく使用されます。たとえば、GMailは9つの隠されたIFrameを使用していると思います。
IFrameは死んでいませんが、Frameset/Framesは死んでいます。
IE (IE7 / IE8)の最後の2つのリリースでは、(IFrameではなく)フレームを拡大すると悲惨な結果が生じました。
必ずIFrameを使用してください。ただし、IMHOはフレームセット/フレームを使用しないでください。
状況によっては非常に便利ですが、限られています。特に、複数のサイトに共通の機能を組み込む。
たとえば、スコットランドの商品のeコマースサイトを多数運営しているクライアントがいます。この一環として、私たちはあなたの名前または選択したタータンから可能なクラン名を見つけるためのいくつかの簡単なアプリケーションを開発しました(必要に応じて笑いますが、タータンは私たちの経済にとって年間7億ドルの価値があります)。この背後にあるデータベースは驚くほど大きく(コア名とタータンテーブルの約1万行)、かなり定期的に更新されます。
したがって、アプリケーションを1つのWebサイトで実行するように設定し、iframeを使用して他のWebサイトに埋め込み、単純なjavascriptパラメーターの受け渡しを可能にして、タータンまたはクランの選択を埋め込みサイトの機能と統合できるようにします。iframeはnoborderとして設定されているため、エンドユーザーには完全にシームレスに見えます。
もちろん、これを行う方法は他にもありますが、iframeの使用はシンプルで堅牢です。そして、それは確かに時代遅れではありません。
コース用の馬...<iframe>は他のものと同じです...適切な目的のために、それらは適切なツールです。間違った目的のために、彼らは醜いハック、またはさらに悪いことです。
Ajaxでは、多くの場合、<div>がより適切なコンテナです。いくつかの場所では、<iframe>によってサポートされているように、自分のサイトの一部として外部コンテンツを詐称する活動は不適切です。
私のチームは先日、ユーザーがHTML電子メール履歴にアクセスできるようにするための理想的な方法として<iframe>を使用しました。電子メールは完全な<html>ページであり、Webテンプレートに簡単に挿入したいと考えていました。<iframe>は、そのデータを表示するのに完全に最適でした]'。
一方、<iframe>は、サイトに出力されるユーザーが送信したコンテンツではほとんどの場合削除または無効化する必要があります。これは、そのコンテキストではセキュリティ上の大きな問題であるためです。
私の前の会社では、顧客が自分のWebサイトに統合するホスト型アプリケーションを提供していました。時々、彼らはこれを行うためにIFrameを使用し、ホストされているページを既存のデザインに適合させました。これはシームレスに行われることもありました(つまり、IFrameには境界線やスクロールバーがなく、ページの一部のように見えました)。これはタグの良い使い方だと思いました。
Googleガジェットの仕様は現在iframeに依存しています:http ://code.google.com/apis/gadgets/docs/spec.html
現在、これらは、複数のドメイン/プロバイダーから取得されたJavaScriptアプリを分離するための唯一の簡単な方法です。
また、サードパーティからWebサイトに埋め込まれているウィジェットの多くはiframeを使用しています。
それらには欠点がありますが、iframeはWeb上の一般的な問題に対する実用的な解決策を提供します。私は彼らが来るのにしばらくの間存在するだろうと推測しなければならないでしょう。
コンプライアンスとセキュリティの問題も、Iframeの使用を促進する可能性があります。ショッピングカートは、支払い処理の側面に全責任を負わずに、一部のWebページの一部としてショッピングカートを視覚的に組み込みたい場合に人気のあるIFrameベースの実装です。
私たちは通常、eコマースのものとクライアントを統合するためのIframeを提供します。
私は、.net Webフォームの複雑さをカバーするためだけに、プルダウンメニュー、リスト、コンテンツブロックなど、あらゆるものにフレームを使用している会社で働いています。アプリケーションは非常に遅く、IEでのみ実行されます。これをしないでください。