[10] [CODE(HTMLe)@en[[[iframe]]]] [[要素]]の [DFN[[CODE(HTMLa)@en[[[srcdoc]]]]]] [[属性]]は、
[CODE(HTMLe)@en[[[iframe]]]] 内に[[レンダリング]]する[[文書]]を埋め込むための[[属性]]です。
[CODE(HTMLa)@en[[[src]]]] [[属性]]に [CODE(URI)@en[[[data:]]]] [[URL]] を使って [[HTML文書]]を埋め込むのと似ていますが、
構文的に [CODE(HTMLa)@en[[[srcdoc]]]] [[属性]]の方が単純ですし、より使いやすいような規定が色々あります。

* 仕様書

[REFS[
- [17] '''[CITE@en-US-x-hixie[HTML Standard]] ([TIME[2013-12-19 00:10:55 +09:00]] 版) <http://www.whatwg.org/specs/web-apps/current-work/#attr-iframe-srcdoc>'''
- [11] [CITE@en-US-x-hixie[HTML Standard]] ([TIME[2013-12-19 00:10:55 +09:00]] 版) <http://www.whatwg.org/specs/web-apps/current-work/#about:srcdoc>
- [26] [CITE@en-US-x-hixie[HTML Standard]] ([TIME[2013-12-19 00:10:55 +09:00]] 版) <http://www.whatwg.org/specs/web-apps/current-work/#the-initial-insertion-mode>
]REFS]

* 意味

[18] 
[CODE[iframe]]
[[要素]]の
[CODE(HTMLa)@en[[[srcdoc]]]] [[属性]]は、
[[要素]]の[F[入れ子閲覧文脈]]が[RUBYB[含む][contain]][[ページ][Web頁]]の内容を指定するものです。 [SRC[>>17]]

[22] [CODE(HTMLa)@en[[[srcdoc]]]] [[属性]]と [CODE(HTMLa)@en[[[src]]]] [[属性]]の両方がある場合、
[CODE(HTMLa)@en[[[srcdoc]]]] [[属性]]が優先されます。 [CODE(HTMLa)@en[[[src]]]] [[属性]]は古い
[[Webブラウザー]]のための[[フォールバック]]として使うことができます。

* IDL 属性

[24] [CODE(DOMi)@en[[[HTMLIFrameElement]]]] [[インターフェイス]]の [DFN[[CODE(DOMa)@en[[[srcdoc]]]]]]
[[IDL属性]]は、 [CODE(DOMi)@en[[[DOMString]]]] の読み書き可能な[[属性]]であり、
[CODE(HTMLa)@en[[[srcdoc]]]] [[内容属性]]を[[反映]]します。 [SRC[>>17]]

* [CODE(HTMLe)@en[iframe]] [CODE(HTMLa)@en[srcdoc]] 文書

[19] [CODE(HTMLa)@en[[[srcdoc]]]] [[属性]]を解釈することによって生じる[[文書]]のことを、
[DFN[[RUBYB[[[[CODE(HTMLe)@en[iframe]] [CODE(HTMLa)@en[srcdoc]]文書]]]@en[[CODE(HTMLe)@en[iframe]] [CODE(HTMLa)@en[srcdoc]] document]]]]といいます。

[12] [[[CODE(HTMLe)@en[iframe]] [CODE(HTMLa)@en[srcdoc]]文書]]の[[文書の番地]]には、
[DFN[[CODE(URI)@en[[[about:srcdoc]]]]]] という特別な [[URL]] が使われます [SRC[>>11]]。

[25] [[[CODE(HTMLe)@en[iframe]] [CODE(HTMLa)@en[srcdoc]]文書]]の[[起源]]や[[実効スクリプト起源]]は、
外側の[[文書]]のものの[[エイリアス]]となります。

[20] [[HTML文書]]でも[[XML文書]]でも、
[[[CODE(HTMLe)@en[iframe]] [CODE(HTMLa)@en[srcdoc]]文書]]は [[HTML文書]]でなければ[['''なりません''']]。
[SRC[>>17]]

;; [35] ですから、 [[[CODE(HTMLe)@en[iframe]] [CODE(HTMLa)@en[srcdoc]]文書]]かつ
[[XML文書]]である[[文書]]は存在しません。

[21] [CODE(HTML)@en[[[DOCTYPE]]]] は省略できます [SRC[>>17]]。[[[CODE(HTMLe)@en[iframe]] [CODE(HTMLa)@en[srcdoc]]文書]]は
[CODE(HTML)@en[[[DOCTYPE]]]] の有無や内容によらず、[[無奇癖モード]]となります [SRC[>>26]]。

;; [32] ただし、 [CODE(HTML)@en[[[DOCTYPE]]]] を記述する場合には、
構文的に正しいものでなければいけません。[[構文解析器]]は、
構文的に正しくない [[DOCTYPE]] に対して[[構文解析エラー]]を報告しなければなりません。

[FIG(railroad)[
= *
== |
=== [[注釈]]
=== [[空白]]
= ?
== [[DOCTYPE]]
= *
== |
=== [[注釈]]
=== [[空白]]
= [CODE(HTMLe)@en[[[html]]]]
= *
== |
=== [[注釈]]
=== [[空白]]
]FIG]

[16] [[[CODE(HTMLe)@en[iframe]] [CODE(HTMLa)@en[srcdoc]]文書]]には[[文字符号化宣言]]を含めることができません。
([[[CODE(HTMLe)@en[iframe]] [CODE(HTMLa)@en[srcdoc]]文書]]は[[文字符号化]]された[[バイト列]]ではなく、
[[DOM]] 上に出現する[[文字列]]だからです。)

[13] [[[CODE(HTMLe)@en[iframe]] [CODE(HTMLa)@en[srcdoc]]文書]]の[[フォールバック基底URL]]は、
外側の[[文書]]の[[文書基底URL]]です。ひいては [CODE(HTMLe)@en[[[base]]]] [[要素]]がない
[[[CODE(HTMLe)@en[iframe]] [CODE(HTMLa)@en[srcdoc]]文書]]の[[文書基底URL]]も、外側の[[文書]]の[[文書基底URL]]
となります。 [SRC[>>11]]

[15] [[[CODE(HTMLe)@en[iframe]] [CODE(HTMLa)@en[srcdoc]]文書]]では、 [CODE(HTMLe)@en[[[title]]]]
[[要素]]を省略できます。

[23] [[[CODE(HTMLe)@en[iframe]] [CODE(HTMLa)@en[srcdoc]]文書]]には [CODE(HTMLa)@en[[[seamless]]]]
[[属性]]の効果が適用されます。

* 処理

[27] [CODE(HTMLa)@en[[[srcdoc]]]] [[属性]]が設定、変更、削除されると、 [CODE(HTMLe)@en[[[iframe]]]]
[[要素]]の処理が行われ、[[入れ子閲覧文脈]]が [CODE(HTMLa)@en[[[srcdoc]]]] と
[CODE(HTMLa)@en[[[src]]]] に基づき [[navigate]] されます。

;; [CODE(HTMLe)@en[[[iframe]]]] を参照。

[33] [[再読込]]も同様です。

;; [CODE(JS)@en[[[location.reload]]]] を参照。

* 関連

[14] [CODE(HTMLa)@en[[[srcdoc]]]] [[属性]]は[[翻訳可能属性]]です。

* 歴史

[57] [CITE['''['''whatwg''']''' srcdoc="" feedback]], [TIME[2024-09-20T16:18:33.000Z]], [TIME[2024-09-28T01:26:05.481Z]] <https://lists.whatwg.org/pipermail/whatwg-whatwg.org/2010-November/029033.html>



[1] [CITE@en[(X)HTML5 Tracking]]
([TIME[2010-01-23 00:27:13 +09:00]] 版)
<http://html5.org/tools/web-apps-tracker?from=4618&to=4619>

[2] [CITE[IRC logs: freenode / #whatwg / 20100120]]
([TIME[2010-01-21 23:48:40 +09:00]] 版)
<http://krijnhoetmer.nl/irc-logs/whatwg/20100120>

[3] [CITE[IRC logs: freenode / #whatwg / 20100121]]
([TIME[2010-01-23 15:13:04 +09:00]] 版)
<http://krijnhoetmer.nl/irc-logs/whatwg/20100121#l-557>

[4] [CITE[IRC logs: freenode / #whatwg / 20100122]]
([TIME[2010-01-24 23:26:45 +09:00]] 版)
<http://krijnhoetmer.nl/irc-logs/whatwg/20100122#l-220>

[5] [CITE[IRC logs: freenode / #whatwg / 20100130]]
([TIME[2010-01-31 21:32:20 +09:00]] 版)
<http://krijnhoetmer.nl/irc-logs/whatwg/20100130#l-301>

[6] [CITE[IRC logs: freenode / #whatwg / 20100820]]
( ([TIME[2010-08-22 16:21:56 +09:00]] 版))
<http://krijnhoetmer.nl/irc-logs/whatwg/20100820#l-134>

[7] [CITE[''''''[''''''whatwg'''''']'''''' srcdoc="" feedback]]
( ([TIME[2010-11-16 08:43:29 +09:00]] 版))
<http://lists.whatwg.org/htdig.cgi/whatwg-whatwg.org/2010-November/029033.html>

[8] [CITE[''''''[''''''whatwg'''''']'''''' <iframe srcdoc> and Content-Security-Policy]]
( ([TIME[2012-05-08 08:27:51 +09:00]] 版))
<http://lists.whatwg.org/htdig.cgi/whatwg-whatwg.org/2012-May/035707.html>

[9] [CITE@en[Web Applications 1.0 r7960     make srcdoc docs always be in standards mode]]
( ([TIME[2013-06-13 02:53:00 +09:00]] 版))
<http://html5.org/tools/web-apps-tracker?from=7959&to=7960>

[28] [CITE@en[(X)HTML5 Tracking]]
([TIME[2010-01-23 00:27:13 +09:00]] 版)
<http://html5.org/tools/web-apps-tracker?from=4618&to=4619>

[29] [CITE[IRC logs: freenode / #whatwg / 20100810]]
([TIME[2010-08-15 11:23:35 +09:00]] 版)
<http://krijnhoetmer.nl/irc-logs/whatwg/20100810#l-144>

[30] [CITE@en[Web Applications 1.0 r5679     Make about:srcdoc documents have better defined handling for base URL, Referer headers, and location.reload().]]
( ([TIME[2010-11-13 09:01:00 +09:00]] 版))
<http://html5.org/tools/web-apps-tracker?from=5678&to=5679>

[31] [CITE[REFERRER: srcdoc documents. · 65f9389 · w3c/webappsec]]
( ([TIME[2014-06-16 03:04:56 +09:00]] 版))
<https://github.com/w3c/webappsec/commit/65f9389edfce6d91bdda3a3cca3bf1b63bc53c5c>

[34] [CITE@en[Align srcdoc author requirements with its processing model · whatwg/html@36b055e]] ([TIME[2015-09-03 20:36:48 +09:00]] 版) <https://github.com/whatwg/html/commit/36b055e430dd4e5c0e154fa557764c91fc8b59fe>

[36] [CITE@en[Integrate Fetch into HTML · whatwg/html@7c5555a]]
([TIME[2015-09-18 18:58:54 +09:00]] 版)
<https://github.com/whatwg/html/commit/7c5555a16f2920c02244c10756bb2f1a11e87a22>

[37] [CITE@en[Actually skip srcdoc documents. For #5. · w3c/webappsec-secure-contexts@834f9f4]]
([TIME[2015-10-22 11:46:54 +09:00]] 版)
<https://github.com/w3c/webappsec-secure-contexts/commit/834f9f4d0202ef890fcaa26bb04f8205454a3b80>

[38] [CITE@en[Editorial: synchronize with the DOM Standard · whatwg/html@21c6ec7]]
([TIME[2016-03-20 18:09:59 +09:00]] 版)
<https://github.com/whatwg/html/commit/21c6ec77594eb89b836d4872222f5916910967fd>

[39] [CITE@en[Integrate with the Referrer Policy spec, part 2 of n]]
( ([[domenic]]著, [TIME[2016-05-18 01:52:35 +09:00]]))
<https://github.com/whatwg/html/commit/176e74243c649b709b9959b7d08b327290c2f403>

[40] [CITE@en[Integrate with HTML, part 2 of n (#49)]]
( ([[domenic]]著, [TIME[2016-05-21 02:48:12 +09:00]]))
<https://github.com/w3c/webappsec-referrer-policy/commit/df68c16003b7f89bbaafe44d8756720889f9d64a>

[FIG(quote)[
[FIGCAPTION[
[41] [CITE@ja[スマートフォンでアプリを開くとabout:srcdocというページにすぐ... - Yahoo!知恵袋]]
( ([TIME[2016-07-11 16:49:35 +09:00]]))
<http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q12136418592>
]FIGCAPTION]

> スマートフォンでアプリを開くとabout:srcdocというページにすぐに切り替わってしまいます。特定のアプリだけかとおもったら幾つかのアプリが同じような症状が出てくるようになりました。

]FIG]


[FIG(quote)[
[FIGCAPTION[
[42] [CITE@ja[価格.com - 『about:srcdocという真っ白なページについて』 LGエレクトロニクス Optimus it L-05E docomo のクチコミ掲示板]]
( ([TIME[2016-07-11 16:50:37 +09:00]]))
<http://bbs.kakaku.com/bbs/J0000008237/SortID=18075377/>
]FIGCAPTION]

> アプリはいくつかあるのですが、WomanLogと言うアプリが一番酷いです。
> このアプリを開くと、一瞬アプリ画面が出てからすぐにabout:srcdocのページになります。
> about:srcdocのページを消すと広告か出て、またabout:srcdocのページ...の繰り返しです。
> ポップアップブロックの設定はしています。
> 全機種だとabout:srcdocのページには飛ばないで広告だけ出てきて、広告を消すとアプリ画面に戻ります。

]FIG]


[FIG(quote)[
[FIGCAPTION[
[43] [CITE@en-US[i have recently had a pop up keep coming up whe... | Communities]]
( ([TIME[2016-07-11 16:53:03 +09:00]]))
<https://discussions.apple.com/thread/5896292?tstart=0>
]FIGCAPTION]

> I have had a pop up on my computer when i am on the internet using chrome and it says:
>  
> Adobe Flash Player has stopped a potentially unsafe operation.
>  
>  
> The following local application on your computer or network:
>  
>  
> about:srcdoc
>  
>  
> is trying to communicate with this Internet-enabled location:
>  
>  
> ds.serving-sys.com

]FIG]


[44] [CITE@en[802895 – implement <iframe srcdoc=''> to allow document content in iframe to be specified inline]]
( ([TIME[2016-07-11 16:54:06 +09:00]]))
<https://bugzilla.mozilla.org/show_bug.cgi?id=802895>

[45] [CITE@en[Set referrer policy better for <iframe srcdoc> documents]]
([[domenic]]著, [TIME[2016-08-12 06:23:46 +09:00]])
<https://github.com/whatwg/html/commit/5d7c532fc9aa275bd3b12d469b9841c0bad4f50d>

[46] [CITE@en[Honor srcdoc document referrer policies when set]]
([[estark37]]著, [TIME[2016-11-24 05:58:33 +09:00]])
<https://github.com/whatwg/html/commit/3147414111d134ecd844d9796aa6fc7c1979c98b>

[47] 
[FIG(bookmarklet)[
<data:text/html,%3Cp%3E%3C/p%3E%3Ciframe srcdoc=&%23xfeff;&%23xfeff;345 onload="previousElementSibling.textContent=contentDocument.documentElement.textContent.length"%3E>
]FIG]

[[Chrome]] では4と表示されます。つまり先頭の [CODE[U+FEFF]] が1つだけ [[BOM]]
と認識されて削除されます。 [TIME[2017-05-02T14:24:12.100Z]]

[48] [CITE@en[Improve note on escaped characters in iframes srcdoc]]
([[earnubs]]著, [TIME[2018-03-16 13:22:35 +09:00]])
<https://github.com/whatwg/html/commit/b5c6eed3e5a7ac6172d1117765b4cde87edd2995>

[49] [CITE@en[Improve the note on characters that need to be escaped in iframes' srcdoc · Issue #1429 · whatwg/html]]
([TIME[2018-03-17 17:49:16 +09:00]])
<https://github.com/whatwg/html/issues/1429>

[50] [CITE@en[Improve note on escaped characters in iframes srcdoc by earnubs · Pull Request #3550 · whatwg/html]]
([TIME[2018-03-17 17:49:30 +09:00]])
<https://github.com/whatwg/html/pull/3550>

[51] [CITE@en[Clone <iframe srcdoc>'s node document's CSP list]]
([[annevk]]著, [TIME[2018-10-12 16:32:38 +09:00]])
<https://github.com/whatwg/html/commit/ebf6d404858bd3d75ec29b4899866935a74c6dc6>

[52] [CITE@en[What does it mean to alias a policy from a CSP list? · Issue #207 · w3c/webappsec-csp]]
([TIME[2018-11-06 16:21:21 +09:00]])
<https://github.com/w3c/webappsec-csp/issues/207>

[53] [CITE@en[Is srcdoc aliasing its parent's CSP or copying it? · Issue #2594 · whatwg/html]]
([TIME[2018-11-06 16:22:01 +09:00]])
<https://github.com/whatwg/html/issues/2594>

[54] [CITE@en[Clone <iframe srcdoc>'s node document's CSP list by annevk · Pull Request #4083 · whatwg/html]]
([TIME[2018-11-06 16:22:50 +09:00]])
<https://github.com/whatwg/html/pull/4083>

[55] [CITE@en[Handle a null request in init document csp algorithm (#372)]]
([[andypaicu]]著, [TIME[2018-12-01 21:28:10 +09:00]])
<https://github.com/w3c/webappsec-csp/commit/b294bec3b1cb4d48feb616a80cc988dff9b6da83>

[56] [CITE@en[Editorial: nested browsing context is a member, not a type]]
([[annevk]], [TIME[2019-11-27 02:46:03 +09:00]], [TIME[2022-01-18T08:45:44.000Z]])
<https://github.com/whatwg/html/commit/6b737bbc428facf34ec3728c0912cf9e172d0ea4>