<iframe>タグは、フレームを表す際に使用します。
iframe要素のsrc属性は、フレーム内に表示されるコンテンツのアドレスを指定します。
src属性が存在する場合、その値には有効なURLを指定します。
src属性の値に空文字は指定できません。
iframe要素の子孫は何も表しませんが、
iframe要素をサポートしていない環境向けのフォールバックコンテンツとして機能します。
frame要素は廃止されている
現在のHTML標準では、過去の仕様にあったframe要素、frameset要素、noframes要素は廃止されています。
これらの要素の代わりに、iframe要素を使用することが推奨されています。
■使用例
以下は、典型的なiframe要素の使用例です。
iframe要素のwidth属性とheight属性で横幅と高さを指定して、フレーム内コンテンツとして広告を表示しています。
HTMLソース
<iframe src="https://ads.example.com/?customerid=923513721&format=banner" width="468" height="60"></iframe>
ブラウザ上の表示
■属性
- src属性
- リソースのアドレスを指定します。
- srcdoc属性
- フレーム内コンテンツとなるドキュメント内容を指定します。
- name属性
- iframeの名前を指定します。
name属性でターゲット名を付けることで、そのiframe要素を特定して操作できます。 - sandbox属性
- iframe要素のコンテンツのセキュリティルールを指定します。
sandbox属性に指定できる値は、以下のとおりです。- allow-downloads …… コンテンツのダウンロードが許可されます。
- allow-forms …… フォームが許可されます。
- allow-modals …… モーダルダイアログが許可されます。
- allow-orientation-lock …… 画面向きのロックが許可されます。
- allow-pointer-lock …… ポインターロックが許可されます。
- allow-popups …… ポップアップが許可されます。
- allow-popups-to-escape-sandbox …… サンドボックス化されていない補助ブラウジングコンテキストの作成が許可されます。
- allow-presentation …… プレゼンテーションが許可されます。
- allow-same-origin …… 同じオリジンとしてコンテンツが許可されます。コンテンツは強制的に一意のオリジンに設定されるのではなく、実際のオリジンからのものとして扱われます。
- allow-scripts …… スクリプトが許可されます。
- allow-top-navigation …… コンテンツの横断操作が許可されます。
- allow-top-navigation-by-user-activation …… ウィンドウが一時的にアクティブ化されている場合にのみ、コンテンツの横断操作が許可されます。
- allow-top-navigation-to-custom-protocols …… 外部ソフトウェアに渡される非フェッチスキームへのナビゲーションが許可されます。
キーワードを複数指定する場合には、ホワイトスペース区切りで記述します。
ただし、 allow-top-navigation と allow-top-navigation-by-user-activation を同時に指定することはできません。
この場合、allow-top-navigation のみ有効となります。
また、allow-top-navigation または allow-popups が指定されている場合は、
allow-top-navigation-to-custom-protocols を同時に指定することはできません。 - allow属性
- iframeのコンテンツに適用されるアクセス許可ポリシーを指定します。
- geolocation …… iframeで地理位置情報を利用することを許可します。
- fullscreen ……
- allowfullscreen属性
- iframeのコンテンツで requestFullscreen() を使用できるようにするかどうかを指定します。
- width属性
- 水平寸法を指定します。
- height属性
- 縦寸法を指定します。
- referrerpolicy属性
- 要素によって開始されるフェッチのリファラーポリシーを指定します。
- loading属性
- 読み込みの延期を決定するときに使用されます。
srcdoc属性
srcdoc属性は、フレーム内コンテンツとなるドキュメント内容を指定します。
srcdoc属性とsrc属性を同時に指定するとsrcdoc属性が優先されます。
src属性を同時に指定しておくことで、
srcdoc属性をサポートしていないユーザーエージェントにフォールバックURLを提供できます。
■使用例
以下のサンプルは、ブログへのコメントをiframe要素にして、srcdoc属性の値にコメント内容を指定しています。
また、コメントにスクリプトをインジェクションされても無効化されるように、sandbox属性を指定しています。
HTMLソース
<article>
<h1>服を買った!</h1>
<p>
何軒も服屋めぐったけど欲しいのなかった。
帰ってメルカリのぞいたら、おしゃれ過ぎるブルゾンが!
誰にも買われたくない。まっしぐらで即購入!
</p>
<footer>
<p>1時間前、ブチ さんのブログ更新
</footer>
<article>
<footer>13分前、ミケ さんのコメント: </footer>
<iframe sandbox srcdoc="<p>どんなの?"></iframe>
</article>
<article>
<footer>9分前、ブチ さんのコメント: </footer>
<iframe sandbox srcdoc="<p>白と黒のブチ模様"></iframe>
</article>
<article>
<footer>5分前、ミケ さんのコメント: </footer>
<iframe sandbox srcdoc="<p>こんど着てきてよ!"></iframe>
</article>
</article>
ブラウザ上の表示
服を買った!
何軒も服屋めぐったけど欲しいのなかった。
帰ってメルカリのぞいたら、おしゃれ過ぎるブルゾンが!
誰にも買われたくない。まっしぐらで即購入!
sandbox属性
sandbox属性は、iframe要素のコンテンツのセキュリティルールを指定します。
sandbox属性を指定すると、コンテンツがサンドボックス化されます。
コンテンツは強制的に一意のオリジンに設定され、
フォーム、スクリプト、様々なAPIなどを無効化して、他のターゲットへの横断リンクを防止します。
sandbox属性の値に複数のキーワードを指定する場合には、ホワイトスペース区切りで記述します。
例えば、サンドボックス化されたコンテンツ内で
alert()、confirm()、prompt()によるダイアログを使用するには、
allow-modalsとallow-same-originの両方を指定する必要があります。
allow-modalsを指定することで、モーダルダイアログが許可されます。
allow-same-originを指定することで、同じオリジンとしてコンテンツが許可されます。
allow-same-originを指定しなければ、クロスオリジン扱いとなってダイアログを表示できません。
■使用例
以下のサンプルでは、iframe要素で別のドメインのページを埋め込んでいます。
未知のコンテンツには問題を起こすスクリプトなどが含まれている可能性があるため、iframe要素にsandbox属性を指定しています。
sandbox属性を指定することで、埋め込まれたページではスクリプト、プラグイン、フォームなどが無効になります。
さらに、埋め込まれたページから他のフレームやウィンドウを操作できなくなります。
HTMLソース
<iframe sandbox src="https://usercontent.example.net/getusercontent.cgi?id=12193"></iframe>
allow属性
allow属性は、iframeのコンテンツに適用されるアクセス許可ポリシーを指定します。
値にはgeolocationやfullscreenなどが指定できるようです。
■使用例
以下のサンプルは、iframe要素で地図サービスを埋め込んでいます。
地理位置情報は、異なるオリジンのフレームではデフォルトで無効になっています。
埋め込まれたフレーム内で Geolocation API を有効にするために、allow属性の値にgeolocationを指定しています。
HTMLソース
<iframe src="https://maps.example.com/" allow="geolocation"></iframe>
allowfullscreen属性
allowfullscreen属性は、iframeのコンテンツで requestFullscreen() を使用できるようにするかどうかを指定します。
allowfullscreen属性を指定すると、iframeのコンテンツがどのオリジンであってもフルスクリーン機能を使用できるように許可します。
■使用例
以下のサンプルは、iframe要素で動画ページを埋め込んでいます。
フレーム内のプレーヤーが動画を全画面表示できるようにするには、allowfullscreen属性の指定が必要です。
HTMLソース
<iframe src="https://video.example.com/embed?id=92469812" allowfullscreen></iframe>
referrerpolicy属性
referrerpolicy属性は、要素によって開始されるフェッチのリファラーポリシーを指定します。
loading属性
loading属性は、読み込みの延期を決定するときに使用されます。
loading属性を使用すると、ビューポートの外にあるiframe要素の読み込みを遅延させるかどうかを指定できます。
itemprop属性
itemprop属性は、アイテムのプロパティを指定するグローバル属性ですが、
iframe要素にitemprop属性を指定する場合には、同時にsrc属性を指定する必要があります。
■関連項目
- <iframe> …… フレームを表す
- <div> …… 特別な意味を付加せず子要素をまとめる
- <article> …… 自己完結する内容であることを表す
- <section> …… 一般的なセクションを表す
- <nav> …… ナビゲーションリンクのセクションを表す
- <aside> …… メインコンテンツとは別のコンテンツであることを表す
- <h1>, <h2>, <h3>, <h4>, <h5>, <h6> …… セクションの見出しを表す
- <hgroup> …… 見出しとその関連コンテンツを表す
- <header> …… 導入部分やナビゲーション補助のグループを表す
- <footer> …… フッターを表す
- <address> …… 連絡先情報を表す