HTML / Element / Initial coverage

<iframe>要素

状態: 初期Coverage 対象: HTML Living Standard 仕様確認: 2026-09-19

Technical Summary

iframe要素は、親Documentの中に別のcontent navigableを作り、その中のDocumentを表示します。単なる装飾用の矩形ではなく、navigation、Document、Window、origin、load処理を持つ文書境界です。

srcはURLから読み込む文書、srcdocは属性値から作る文書を指定します。両方がある場合はsrcdocが優先されます。外部・非信頼コンテンツでは、sandboxing、Permissions Policy、参照元、埋め込み文書のaccessible nameを個別に確認します。

Definition / Categories

項目仕様上の整理
意味埋め込み対象のcontent navigableを表す
CategoriesFlow content、Phrasing content、Embedded content、Interactive content、Palpable content
ContextEmbedded contentが期待される場所
Content modelNothing
主要なcontent attributessrcsrcdocnamesandboxallowallowfullscreenwidthheightreferrerpolicyloading
DOM interfaceHTMLIFrameElementsrcsrcdocnamesandboxallowreferrerPolicyloadingcontentDocumentcontentWindowなどを持つ

ここでいうcontent navigableは、iframeの子文書を読み込むためのWeb Platform上の入れ物です。親Documentから見えるDOM要素と、子側のactive Documentは同じものではありません。

srcsrcdoc・初期文書

srcが指定されていれば、その値を親Documentを基準にURLとして解決し、iframeのcontent navigableをnavigationします。srcdocが指定されている場合は、その値からabout:srcdocのDocumentを構築し、srcより優先します。

状態確認する境界
srcdocありsrcdoc documentを構築し、URLはabout:srcdocとして扱われる
srcdocなし、validなsrc指定URLへchild navigableをnavigationする
初期挿入時にsrcなし/parse失敗初期about:blank Documentが残る場合がある
srcsrcdocの両方srcdocを処理し、srcはfallbackとして同時には使われない
<iframe
  title="生成したプレビュー"
  sandbox
  srcdoc="&lt;h1&gt;Preview&lt;/h1&gt;&lt;p&gt;Separate document&lt;/p&gt;">
</iframe>

属性値に埋め込むHTMLは、外側のHTML parserと内側のsrcdoc documentの2段階で解釈されます。引用符、アンパサンド、scriptを含む文字列を扱うときは、Trusted Types、CSP、サニタイズ方針を別途確認します。

Navigation・load・DOM interface

iframeの属性が挿入、変更、削除されると、user agentは必要に応じてiframe attributes processingを実行し、child navigableをnavigationします。読み込み完了時にはiframeのload eventが発火しますが、loadはコンテンツの信頼性、内容の正しさ、親からのDOMアクセス可能性を保証するEvidenceではありません。

const frame = document.querySelector('#preview');

frame.addEventListener('load', () => {
  console.log(frame.contentWindow);
});

// contentDocumentの読み取り可否はoriginなどの条件に依存する。

contentDocumentcontentWindowはDOM interfaceとして公開されますが、cross-originの子文書を親から自由に読み書きできることを意味しません。same-origin policy、sandboxによるopaque origin、CSP、COEPなどの別の境界を同時に確認する必要があります。

sandboxとorigin・権限

sandbox属性が指定されると、iframe内の内容に追加のsandboxing restrictionsが適用されます。値なしのsandboxでは、script、form、popup、top-level navigationなどの能力が制限されます。キーワードを追加すると、対応する能力だけが再び許可されます。

設定主な境界注意点
sandbox追加制限を有効にする空の値でも制限が有効になる
allow-scriptsscriptの実行を許可する他の権限と組み合わせる必要がある
allow-same-originopaque originではなく実際のoriginを使う同じoriginでscript許可と併用するとsandbox解除の経路になり得る
allow-formsなどフォーム、popup、top navigationなどを個別に再許可する機能要件に必要なものだけを選ぶ

同じoriginの文書にallow-scriptsallow-same-originを同時に与える構成は、sandboxを外せる可能性があるため、強い隔離を意図する設定として扱えません。攻撃可能なコンテンツの配信元を分けることも、sandboxとは別の安全対策です。

allowreferrerpolicyloading

属性役割他の境界との違い
allowiframe内へ適用するPermissions Policyを指定するsandboxのscript・origin制限とは別の権限モデル
referrerpolicyiframeが開始するfetchの参照元ポリシーを指定する親から子へのDOMアクセスを許可する属性ではない
loadinglazy loadingの判定に使う遅延読み込みの指定であり、sandboxや権限の制限ではない
allowfullscreeniframe内のFullscreen API利用に関係するFullscreen側の条件、Permissions Policy、user activationも確認する

属性を付けたことだけで、対象機能が必ず利用できるとは限りません。HTTP headerのPermissions Policy、CSP、sandbox、user activation、ブラウザー実装が同時に条件になります。

Accessibility

HTML-AAMでは、iframeはWAI-ARIAの対応roleを持たない一方、platformごとにinternal frameなどのmappingが定義されます。iframe自身のaccessible nameはaria-labelaria-labelledby、またはtitleを経路として計算します。iframe内のDocumentは、子Document自身のtitleから名前を得る条件もあります。

<iframe
  src="https://example.com/payment"
  title="Secure payment form"
></iframe>

埋め込みサービスの画面を親側のtitleだけで説明し切れるとは限りません。子Documentのtitle、見出し、キーボード操作、focus、読み上げ、エラー表示を、親のAccessibility Treeと分けて確認します。

Fact / Evidence(主張 / 根拠)

要素の意味とprocessing modelに関する仕様上の主張を、ブラウザー実装、WPT、アクセシビリティ観測から分離します。

主要な主張と根拠位置
TypeFact / 主張Condition / ScopeStatusSource
SPECiframeは、埋め込まれるcontent navigableを表す。意味、categories、context、content model確認済みHTML Standard: the iframe element
SPECsrcdocが指定されている場合、そのDocumentを構築し、srcより優先する。srcdoc document、about:srcdoc、src/srcdoc併記確認済みHTML Standard: srcdoc processing
SPECsandboxはiframe内の内容に追加の制限を適用し、キーワードで能力を再許可する。opaque origin、script、form、popup、top navigation確認済みHTML Standard: sandboxing
SPECallowはiframeの内容へ適用するPermissions Policyを指定する。iframe policy container、Permissions Policy確認済みHTML Standard: allow
SPECloadingはiframeのnavigationを遅延できるかの判定に関係する。lazy loading、intersection observation、load event確認済みHTML Standard: loading
SPECiframeのaccessible nameはaria-labelaria-labelledbytitleなどの条件で計算される。iframe element、子Documentのtitle、platform mapping確認済みHTML-AAM: iframe

Evidence

  1. HTML Standard: The iframe element — categories、content model、attributes、content navigable、src/srcdoc、sandbox、navigation、load、DOM interface
  2. Permissions Policy: iframe allow attribute — iframe内のpolicy containerとdelegated policy
  3. HTML Accessibility API Mappings: iframe — platform role mappingとaccessible name computation
  4. Web Platform Tests: the-iframe-element — iframe attributes、navigation、sandbox、load、DOM APIに関係するテスト群の入口

Implementation Evidence

仕様上のprocessing modelと、ブラウザーで観測したnavigation、load、DOM access、sandbox、Accessibility Treeを分けて登録します。Chrome 153.0.0.0 / Windows NT 10.0で専用fixtureを実行し、確認できた範囲だけを部分確認として記録しました。

実行fixture: iframe-v1で、srcdoc優先、初期about:blank、srcdoc変更とload event、same-originのcontentDocument、sandboxによるevent originの境界、title付きAccessibility Treeを確認しました。実行記録はdocs/atlas/iframe-v1-results-2026-09-19.mdに保存しています。

Implementation Evidence registry for the iframe element
TypeReproduction scopeConditions to recordStatus
IMPLsrc/srcdoc優先、初期about:blank、srcdoc変更、load、same-originのcontentDocument/contentWindow、sandboxのevent origin、loading・allow・referrerpolicyの属性反映Chrome 153.0.0.0 / Windows NT 10.0 / 2026-09-19 / fixture ID iframe-v1。8項目すべてpass。実際のlazy loading、Firefox・Safari、複雑なcross-origin相互作用は未実施部分確認
WPTiframe element、srcdoc、sandbox、navigation、load、DOM APIに関係する個別テストthe-iframe-element配下の選定ファイルは未実行。browser・実行日・pass/fail・未実行理由を登録する未実施
AAMiframeのinternal frame mapping、titleによるname、子Documentのtitle、focus可能性Chrome 153のAccessibility Treeで、親側のiframe descriptionと、srcdoc・same-origin・sandbox childのDocument名を観測。支援技術、platform API、Firefox・Safariは未実施部分観測

iframeの表示、load、DOM access、origin、sandbox、Permissions Policy、Accessibility Treeは、URL、HTTP headers、親子origin、属性、user agent、OSに依存し得ます。単一環境の観測を、すべての埋め込みに共通する結果として登録しません。

Coverage / Open Issues

  • 確認済み意味、categories、context、content model、主要属性、HTMLIFrameElementの入口
  • 確認済みsrc/srcdocの優先関係、初期about:blank、content navigable、navigationとloadの仕様上の入口
  • 確認済みsandbox、allow、referrerpolicy、loading、accessible nameに関する仕様とEvidenceの参照位置
  • 部分確認Chrome 153でのsrcdoc優先、初期about:blank、srcdoc変更とload、same-origin DOM access、sandbox event origin、属性反映、Accessibility Tree
  • 未完了Firefox・Safariでのsrcdoc、load、属性変更、sandbox、loading、contentDocumentの比較と、Chromeの実際のlazy loading
  • 未完了cross-origin、CSP、COEP/CORP、Permissions Policy、postMessage、window.name、navigationの相互作用
  • 未完了WPTの個別実行結果、HTML-AAMのplatform mapping、支援技術、互換性、Expert-gap Review

このページは初期Coverageです。仕様上の入口を整理したものであり、すべてのブラウザー、HTTP header、origin構成、埋め込みサービス、支援技術で同じ結果になることを主張しません。

Related surface

初心者向けの埋め込み、titlesandboxsrcdoc、リンクとの違いはYugienのiframe要素ページを参照してください。navigationとの境界はa要素、scriptによる取得と実行はscript要素、form送信との関係はform要素でも確認できます。