本ページには広告が含まれています。

【HTML】iframe(インラインフレーム)とは_Webの基礎

【HTML】iframe(インラインフレームについて_Webの基礎知識

Webページの基礎、HTMLのフレーム要素についてです。

スポンサーリンク

はじめに

HTMLのフレームは、一つのウィンドウ内に画面を分割して複数のページを表示します、それぞれに別々のHTMLを表示する機能のことです。分割方法を指定する土台となるHTMLと、分割した部分に表示するHTMLが必要です。

HTML4までは、<frameset>タグと<frame>タグを組み合わせて、分割ページを実現していましたが、HTML5で<iframe>タグ以外は廃止となっています。しかし、既存コードで利用されていることもまだ多いたので、従来の実装方法も含めてしっかりと理解しておきたいと思います。

HTLM5のフレーム

HTML5では、フレームページの作成には<iframe>タグが推奨されています。というより、<iframe>タグ以外のフレーム用のタグは廃止されており、画面分割はCSSで記述するようになっています。

<iframe>タグは、インラインフレームと呼ばれています。現在のHTMLページの中に、Youtube やGoogle Mapなど、他のHTMLページを埋め込んで表示させるタグです。従来の画面分割のためのタグではありませんが、CSSと組み合わせることで複数HTMLで構成されたフレームページの作成を可能にします。

インラインフレーム要素<iframe>タグの属性

「iframe」は inline frame の略です。インラインフレームを作成する<iframe>タグについて見ていきましょう。

<iframe>タグの属性一覧

<iframe>タグの属性一覧表を以下に示します。非推奨の属性については省略しています。

属性名内容使用例
srcURL【必須属性】コンテンツ
のアドレスを指定します。
src="https://www.kurumico.com/"
allowgeolocation
fullscreen
など
埋め込むコンテンツが利用
可能な機能を制御します。
allow="geolocation; microphone"
cspdefault-src
media-src
など
埋め込まれたコンテンツに
適用されるアクセス許可
ポリシーを指定します。
csp="default-src 'self'"
heightpx単位コンテンツの高さを指定
します。既定値は150px
height="300"
loadingeager
lazy
auto
コンテンツを読み込みむ
タイミングを指定します。
loading="lazy"
loading="eager"
referrerpolicyno-referrer
など
別のページに移動する時に
送信するリファラーを指定
します。
referrerpolicy=
“no-referrer-when-downgrade”
title文字列コンテンツの説明を提供
します。
title="kurumico.com"
widthpx単位コンテンツの幅を指定
します。既定値は300px
width="500"

すべての HTML要素で共通に使用できる「グローバル属性」については別途解説したいと思います。

src属性

埋め込むコンテンツの URL を指定する属性です。同一オリジンポリシーに従う空白ページを埋め込む場合は、about:blank の値を使用します。また、プログラムから <iframe> 内の src属性を削除すると、Firefox (バージョン 65 以降)、Chromium ベースのブラウザー、Safari/iOS では about:blank が読み込まれます。

次の HTML は Google Map を埋め込むコードです。コード表示の下側の段落に埋め込んでみました。

<iframe src="https://www.google.com/maps/embed?"></iframe>

外部Webページを埋め込む場合は、外部Webページが利用を許可している場合に限ります。

allow属性

allow属性を使用することで、埋め込まれたコンテンツが利用できるデバイスやブラウザの機能を制御することができます。

allow属性で指定できる値の一覧(全てではありません)です。

説明
accelerometerデバイスの加速度センサーへのアクセスを許可します。
ambient-light-sensorデバイスの光量に関する情報へのアクセスを許可します。
autoplay埋め込まれたメディアが自動的に再生されるようにします。
batteryデバイスのバッテリーに関する情報へのアクセスを許可します。
cameraデバイスのカメラへのアクセスを許可します。
display-capture画面のキャプチャを許可します。
encrypted-media暗号化されたメディアの使用を許可します。
Encrypted Media Extensions API(EME)
fullscreen全画面モードで表示します。
geolocationGeolocation API の使用を許可し、
ユーザーの位置情報を使用可能にします。
gyroscopeデバイスのジャイロスコープへのアクセスを許可します。
magnetometerデバイスの磁力計へのアクセスを許可します。
microphoneデバイスのマイクへのアクセスを許可します。
midiMIDI インターフェースへのアクセスを許可します。
paymentPayment Request API の使用を許可し、
ユーザーに決済サービス機能の使用を可能にします。
picture-in-picturePicture-in-Picture モードでビデオを再生可能にします。

次のコード例は、allow属性に geolocationmicrophone を指定しています。

<iframe src="https://ex.com" allow="geolocation; microphone"></iframe>

これで、埋め込まれたコンテンツがユーザーのデバイスの位置情報とマイクにアクセスできるようになります。

csp属性

埋め込まれたコンテンツがどのようなリソースにアクセスできるかを指定する属性です。

csp属性で指定できる主な値の一覧です。

説明
default-srcリソースにデフォルトでアクセスできるソースを指定します。
script-srcJavaScriptのソースを指定します。
style-srcスタイルシートのソースを指定します。
img-src画像のソースを指定します。
media-srcメディアファイルのソースを指定します。
font-srcフォントファイルのソースを指定します。
connect-srcXMLHttpRequestやWeb Socketsなど、
HTTP接続に使用されるリソースのソースを指定します。
object-srcobject要素 や embed要素など、プラグインに使用されるリソース
のソースを指定します。
child-srciframe要素など、子要素に使用されるリソースのソースを指定します。

default-src の例

次のコードは、自サイトのリソースにデフォルトでアクセスできるようにする例です。

<iframe src="https://ex.com" csp="default-src 'self'"></iframe>

'self'は自サイトを指定する書き方です。

script-src の例

JavaScriptファイルにアクセスできるソースを指定する例です

<iframe src="https://ex.com" csp="script-src https://ex.com/libs/xxx.js">
</iframe>

height属性、width属性

height属性は、埋め込むコンテンツの高さをピクセル(px)単位で指定します。
width属性は、埋め込むコンテンツのをピクセル(px)単位で指定します。
※ 単位の(px)は省略できます。

<iframe src="https://ex.com" height="300" width="500"></iframe>

上のコードでは、高さを300px、幅を500pxに設定しています。
読み込むコンテンツが設定よりも大きい場合には縮小して表示します。

loading属性

ブラウザーが <iframe></iframe> をどのように読み込むかを指定します。

説明
eager【既定値】ビューポートを無視して<iframe>を直ちに読み込みます。
lazyビューポートに達するまで<iframe>の読み込みを延期します。
autoブラウザが自動的に最適な読み込み方法を選択します。

遅延読み込みさせる設定のコード例です。

<iframe src="https://ex.com" loading="lazy"></iframe>

ビューポートに達してからコンテンツを読み込むように設定しています。

referrerpolicy属性

referrerpolicy属性は、あるWebページを参照した後、リンクをクリックして別のページに移動する際に、PCからサーバーにリファラーという情報を送信します。このリファラーは、移動前のWebページの情報を含んでいます。

インラインフレームのリソースにアクセスする際に、プロトコルのセキュリティ水準によって、どのようにリファラーを送信するかを次の値を使って設定します。

説明
no-referrerリファラー Referer を送信しません。
no-referrer-when-downgradeHTTPSからHTTPへの移動はリファラーを送信しません。
それ以外ではすべて送信します。これが既定の動作です。
originオリジンのみ送信します。
オリジンとは(スキーム, ホスト名, ポート番号)です。
origin-when-cross-origin同一オリジンの場合はすべて送信します。
オリジンが違う場合はオリジンだけ送信します。
same-origin同一オリジンの場合はすべて送信します。
オリジンが違う場合は何も送信しません。
strict-originHTTPSからHTTPへの移動はリファラーを送信しません。
それ以外ではオリジンのみ送信します。
strict-origin-when-cross-origin同一オリジンの場合はすべて送信します。
異なるオリジンの場合は次のとおりです。
・HTTPS → HTTPS はオリジンだけを送信します。
・HTTPS → HTTP ならリファラーは送信しません。
unsafe-urlオリジンに関係なくすべて送信します。

HTTPS = 暗号化された通信、HTTP = 暗号化されていない通信

<iframe src="https://ex.com" referrerpolicy="no-referrer-when-downgrade">
</iframe>

上のコードは値に origin-when-cross-origin を設定した例です。

title属性

title属性で、埋め込まれるコンテンツにタイトルや簡単な説明を付加することができます。

次のコードでは「インラインフレームのサンプル」という title を付けています。

<iframe src="https://ex.com" title="インラインフレームのサンプル"></iframe>

インラインフレーム要素の内容がわかるように記述しておけば、読み上げソフトなどがを title の内容を読み上げてくれるなどで、要素の特定がしやすくなります。

<iframe>タグの使用例

Google Map を埋め込んでみます

まず、Google Map で「五稜郭」を検索して表示しさせました。

Google Map の共有「地図を共有または埋め込む」の「地図を埋め込む」タブで「HTML をコピー」から取得した HTMLコードが次のとおりです。

<iframe
 src="https://www.google.com/maps/embed?
pb=!1m18!1m12!1m3!1d2974.456545507466!2d140.7542088795008!3d41.796924463283936!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x5f9ef46bcb8d5525%3A0xa9e4bd2d96c4d502!2z5LqU56ic6YOt6Leh!5e0!3m2!1sja!2sjp!4v1695646166299!5m2!1sja!2sjp"
 width="600"
 height="450"
 style="border:0;"
 allowfullscreen=""
 loading="lazy"
 referrerpolicy="no-referrer-when-downgrade">
</iframe>

この下に、カスタムHTMLを配置してコードを貼り付けてみました。

どうです。ちゃんと表示させることができました。

コード内で使われている属性

ここで使われている属性は、src属性、width属性、height属性、style属性、
loading属性、allowfullscreen属性、referrerpolicy属性です。

記事内で解説していない属性があるので補足しておきます。

style属性

style属性は「グローバル属性」です。要素にすばやくCSSスタイル宣言を適用する必要があるときに使います。「style="border:0;"」でボーダーを表示しないように設定しています。

allowfullscreen属性

allowfullscreen属性は、古い属性です。現行では「allow="fullscreen"」で定義します。
全画面モードにすることができる場合は true に設定しますが、ここでは “” と値が設定されていないので false です。

現行では、全画面モードで表示させる場合 allow属性「allow="fullscreen"」で定義します。

おわりに

今回は、Webページ「HTML」の<iframe>インラインフレーム要素について勉強しました。

iframe要素<iframe>を使うと、フレーム内にコンテンツを埋め込むことができます。

今回は、Google Map を埋め込む例を使いました。

「YouTube」や「X」など様々なコンテンツを埋め込むケースは結構あると思います。

そんな時に使うのが <iframe> です。

実際に、いろいろ試して覚えておくようにしたいと思います。

この記事が、少しでも誰かのお役に立てれば幸いです。

スポンサーリンク
スポンサーリンク

当サイトの記事で使用したVBAなどのサンプルをDLできます

この記事のサンプルはありません!

ダウンロードページへは下のカードをクリックすればジャンプできます。
よろしければご利用ください!