2009-04-16 38 views
78

それについての矛盾したメッセージを得る、そうでないと願っています。 gazillionサイトで使用されているため、サポートが停止するとは想像もできません。IFrame(HTML)は時代遅れですか?

それについていくつかの追加の質問:

  1. は、なぜ彼らは、このタグを段階的に廃止すべきか?
  2. 代わりの代替手段はありますか?

答えて

49

私の意見では、W3CはStrict HTMLとXHTMLのdoctypeからiframeをダンプする際に銃を飛ばしました。理論的には、<object>要素を使用してドキュメントに異物を追加することになりますが、ブラウザの違いや制限により、これは多くの開発者にとって不可能になっています。はるかに現実的なHTML5(まだドラフト)で、iframeが戻ってきて、さらに2つの新しい属性:seamlessと興味をそそる​​があります。

+0

素晴らしいです、私はブラウザがAJAXファイルのアップロードをサポートしてくれることを願っています。そのためにiframeやフラッシュを使う必要はありません。 – Xeoncross

+0

@Xeoncross Firefoxとchrome do:https://developer.mozilla.org/ja/Using_files_from_web_applications – chesles

22

IFrameは廃止されていませんが、使用する理由はまれです。

理由:

  • それは他のドメインから他の人のものをオフ壁材のために素晴らしいことだが、スムーズに統合されません。 (スタイルシート、javascriptなど)
  • 埋め込みタグを使用するのではなく、iframe経由でマルチメディアを統合する方が簡単な場合があります。
  • 本当に特殊なケースは、gmailのケースのように、サウンドや履歴管理に使用しています。

また、iframeを削除する必要はありません。必要なタグであり、しばらくお待ちください。

7

IFrameはAJAXで多く使用されています。たとえばGMailは、私が信じている9つの隠れたIFrameを使用します。

+5

私は5つのiframeを数えます。 1つは隠されておらず、実際には、そのうちの1つがほとんど全景です。 IFrameはAjaxでは通常使用されません(とにかく主要なフレームワークではありません)。 Gmailでは、履歴トラッキング、音声(奇数)、キャンバスの描画など、iframeを使用しています。 – cgp

+0

私はちょうど数年前に読んだ記事に行きました。 –

72

のサポートはまだHTML 5にありますので、近い将来変更されるとは思われません。あなたの他の質問に答えるために

  1. 秒(一般的にはフレームなど)は、ユーザーフレンドリーなほとんどの時間ではありません。
    • 彼らは内のコンテンツの容易なアクセスを許可していません。 (少なくともフレームの外のコンテンツを失うことなく)URLを介してフレームを送信する。
    • ほとんど「technophobe」ユーザーはフレームによって刺激されます。私の知る限り、彼らは
  2. 選択肢は、動的ページ生成(SSI、PHP、Railsとその上に)含まれ、例えばの内容を変更するためにJavaScript/AJAXを使用してブラウザのレンダリングに時間がかかります知っているよう
  3. a <div>

明らかに:私はインターフェイス要素としてについて話しています。例えば、次のような他のものをロードする隠された要素ではありませんGoogle Mailはそうです。

+28

Googleが非常に特殊な目的のためにiframeを使用している点は+1です。 – cgp

2

サイトを通常のフレームセットからIframeに変更しましたが、通常のフレームは必要な機能を実行できませんでした。コードベースの残りの部分で問題は発生しませんでした。

23

iframe は、ページレイアウト用に廃止されました。良いCSSレイアウトの代わりにそれらを使用しないでください、テーブルベースのレイアウトでも良いです。

のiframeを使用するための十分な理由は以下のとおりです。

  • 広告:例えばアドワーズ広告は、この技術を使用して、それがカプセル化するための良いです - 広告のCSSは、ページを破壊しません。
  • 非表示のiframe:それは私の前の会社ではなどのトラッキング、AJAX-代替、
+33

***アドワーズ広告にiframeを使用しないでください。これはTOSに違反しています。 *** http://www.scribd.com/doc/97655/15-Common-Mistakes-by-Google-Adsense-Publishers-that-Violate-Terms-of-Service – cgp

+34

altCognito:AdWordsでは、私以外のiframeが使用されています: )私は別のiframeにadword iframeを置くことを意味しませんでした。 – Thinker

+7

私はそれが一般的な間違いであることを知っています(したがってすべての記事)ので、人々があなたが言っていることを理解できるようにフラグを立てたかったのです。 – cgp

5

のように、何百も使用可能なもののために使用することができ、我々は、顧客が自分のウェブサイトに統合するホストされたアプリケーションを提供。時々、彼らはこれを行うためにIFrameを使用し、ホスティングされたページを既存のデザインに合わせることができます。時にはこれもシームレスに行われました(つまり、IFrameには枠線やスクロールバーがありませんでした。私は、これがタグをうまく利用していると考えました。

+0

iframeは、独自のスタイルとJavaScriptを使用してクライアントのWebサイトに配置する必要があるものを処理するために必要不可欠であり、ユーザーのコードは壊れません。 CSSは簡単にオーバーライドすることができ、JSは時には(まれに)コンフリクトを引き起こし、「クローズドシステム」アプローチに最適です。 – vsync

5

これらは、状況によっては非常に便利ですが、制限があります。特に、複数のサイトに共通の機能を組み込むこと。

たとえば、スコットランドの商品の電子商取引サイトを運営するクライアントがあります。その一環として、あなたの姓やタータンの選択肢から、可能な氏名を見つけるための簡単なアプリケーションをいくつか開発しました(望むのであれば笑うが、タータンは年間7億ドルの価値がある)。この背後にあるデータベースは、驚くほど大きく(コア名とタータンのテーブルではほぼ10000行)、かなり定期的に更新されています。

私たちはアプリケーションを1つのWebサイトで実行するように設定し、iframeを使用してこれを他のWebサイトに埋め込み、簡単なjavascriptパラメータの受け渡しを可能にして、埋め込みサイトのタータンまたは一族の選択を統合できます。 iframeはnoborderとして設定されているため、エンドユーザーは完全にシームレスに見えます。

もちろん、これを行う方法はほかにもありますが、iframeの使用は簡単で堅牢です。それは確かに時代遅れではありません。

7

IFrameは死んでいないが、フレームセット/フレームが死んでいる。

の最新リリース2(IE7/IE8)IE(IE7/IE8)ズームインフレーム(IFrameではなく)は悲惨な結果を招いています。

是非、IFrameを使用してください。しかし、IMHOはフレームセット/フレームから離れています。

4

Googleのガジェットの仕様は、現在のiframeに依存しています:

http://code.google.com/apis/gadgets/docs/spec.htmlは現在、彼らは複数のドメイン/プロバイダから引き出されたJavaScriptアプリケーション用のアイソレーションを提供する唯一の簡単な方法です。

また、サードパーティのWebサイトに埋め込んだウィジェットの多くは、iframeを使用しています。

iframeには欠点がありますが、iframeはウェブの一般的な問題に対する実用的な解決策を提供します。私は彼らが来るのにしばらく時間がかかるだろうと推測しなければならないだろう。

0

私は、.net Webフォームの複雑さをカバーするためだけに、プルダウンメニュー、リスト、コンテンツブロックなどのすべてにフレームを使用していた会社で働いています。アプリケーションは非常に遅く、IEでのみ実行されます。これをしないでください。

5

コースの馬... <iframe>は、正しい目的のためには正しいツールです。間違った目的のために、彼らは醜いハックか、悪いです。

Ajaxでは、<div>がより適切なコンテナです。一部の場所では、<のiframe >でサポートされているように、自分のサイトの一部として外部コンテンツを渡す行為は不適切です。電子メールは私達が私達のウェブテンプレートに簡単に挿入したい<HTML>ページ完了した -

私のチームは、ユーザーがHTML形式の電子メール履歴へのアクセスを提供する理想的な方法として、他の日<のiframe >を使用しました。 <iframe>は、そのデータを表示するために絶対に完璧でした。

<iframe>は、サイトに出力されるユーザーが投稿したコンテンツでは、ほとんどの場合、削除または無効にする必要があります。これは、そのような状況ではセキュリティ上の大きな問題であるためです。

2

準拠とセキュリティの問題により、Iframeを使用することもできます。ショッピングカートは、一般的なIFrameベースの実装で、ショッピングカートを視覚的にいくつかのWebページの一部として組み込んで、支払い処理側の責任を全うする必要はありません。

私は通常、私たちの電子商取引のものとクライアントを統合するためにIframeを配信しています。

12

多くの場合、おそらく機能するIFrameの代わりにObjectタグを提案するフォーラムがたくさんあります。

例えば、私はPDFだけをPDF以外のページに表示する必要があったため、IFrameで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> 

しかし、オブジェクトがページのONLY PDF部分を印刷することができるようするための要件を満たすのに適して代わるものではありませんでした。

アンのIFrameは(基本的には、ウィンドウ内のウィンドウ)ページ内で独自のウィンドウのようなもので、あなたがウィンドウオブジェクトを取得したら、あなたは次のように、その上の.print()を呼び出すことができます。

jQuery("#confirmed_pdf").contentWindow.print(); 

IFrameにはcontentWindowプロパティがあり、その部分だけを印刷できるようになります。オブジェクトにはcontentWindowプロパティがないため、ページのセクションのみを印刷する方法はありません。

IFrameを使用して何かを表示している場合は、代わりにObjectのようなタグが使用されているようです。しかし、IFrameのコンテンツとある意味でやり取りする必要がある場合は、IFrameが必要な場合があります。