web-dev-qa-db-ja.com

IframeまたはObjectタグを使用して別のWebページを埋め込む

私が最近稼働している職場で維持しているWebベースのシステムでは、メインWebページ内に2番目のWebページを埋め込むためのObject要素が作成されます。 (事実上、メインWebページにはメニューとヘッダーが含まれ、メインアプリケーションページはオブジェクト内にあります)

例えば

<object id="contentarea" standby="loading data, please wait..."  
    title="loading data, please wait..." width="100%" height="53%" 
    type="text/html" data="MainPage.aspx"></object>

このアプリケーションの古いバージョンでは、IFRAMEを使用してこれを行っています。オブジェクトタグを使用すると、埋め込まれたWebページの動作が、以前にIFRAMEでホストされていたときとは異なることがわかりました。たとえばIEでは、ツールヒントが機能していないようです(これについては別の質問を投稿します!)。IFRAMEの場合は、埋め込みページがスクリプトで親ページにアクセスできないようですが、 。

IFRAMEよりもオブジェクトタグを優先する理由は、IFRAMEが非推奨になり、ブラウザーの将来のバージョンに依存できないためと言われています。これは本当ですか? Webページを埋め込むために、IframeでObjectタグを使用することは望ましいですか?それとも、IFRAMEは将来にわたって十分にサポートされる可能性がありますか(私が古くて灰色になってからずっと、私が保守しているアプリケーションの耐用年数を過ぎている)。

31
Tim C

IFRAME要素今後のHTML5標準 の一部です。また、HTML5は世界中の主要なブラウザーベンダー(Mozilla、Opera、Safari、IE)によって開発されており、基本的には近い将来にIFRAME要素が存在することを保証します。それらのいくつかは、AUDIOやVIDEOやいくつかの新しいJavaScript APIなど、すでにいくつかのHTML5要素をサポートしています。

OBJECT要素はドラフトにある であることも事実ですが、これはIFRAMEとOBJECTの目的が異なるためです。 IFRAMESは主にWebアプリケーションをサンドボックス化するために設計されています。

したがって、私のアドバイスは、OBJECTではなくIFRAMEを使用することです。

44
Ionuț G. Stan

IFRAMEはXHTML 1.0 Strict DTDの一部ではありません。それらはHTML 4およびXHTML 1.0 Transitionalで完全に有効です。これらの理由だけでも、IFRAMEは長い間サポートされ続けます。

多くのブックマークレットと分析コードはまだIFRAMEを使用しています。

8
kim3er

HTMLページを埋め込む場合は、iframeobjectの顕著な違いが1つあります。

  • iframeを更新するとsrcはブラウザの履歴を変更します(新しいエントリを追加します)
  • objectを更新するとdataはブラウザの履歴を変更しません

また、ページがobjectタグに埋め込まれている場合、ドラッグ&ドロップは機能しないようですが、iframeタグでは機能します。 react-draggable、そして誰かが同じ問題を抱えているのを見ることができます( https://stackoverflow.com/questions/31807848/replacing-iframe-with-object-tag-drag-and-drop-not-working =)

6
JBE

W3C仕様ではIFRAMEタグが廃止されていることを示している可能性がありますが(少なくともいずれにしても)XHTMLでは、ブラウザー開発者は必ずしもそれらの仕様の説明に厳密に従うとは限りません(IE6は誰ですか?)

現在のところIFRAMEの使用は非常に一般的であり、W3Cはそれらが将来の一部であるかどうかを判断できないようです(HTML 4.01とXHTML)、それらはほとんどすべてで使用するのに安全な実装です。ブラウザ。

2
DanSingerman