[5] [DFN[[CODE(JS)@en[[[document.close]]]]]] [[メソッド]]は、
[CODE(JS)@en[[[document.open]]]] により作成した[[文書]]に [[EOF]]
を挿入します。

* 仕様書

[REFS[
- [2] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2015-05-06 10:42:35 +09:00]] 版) <https://html.spec.whatwg.org/#dom-document-close>
]REFS]

* 処理

[3] [CODE(DOMi)@en[[[Document]]]] [[インターフェイス]]の
[DFN[[CODE(DOMm)@en[[[close]]]]]] [[メソッド]]は、次のようにしなければ[['''なりません''']]
[SRC[>>2]]。
[FIG(steps)[
= [9] 
[FIG(list)[
- [13] [[文書]]の[F[型][文書の型]]が[[XML文書]]
- [14] [[文書]]の [F[throw-on-dynamic-markup-insertion counter]] が[[正]]
]FIG]
... のいずれかの場合、
== [10] [CODE(DOMe)@en[[[InvalidStateError]]]] [[例外]]を[[投げ]]、ここで停止します。
= [[文書]]の[[構文解析器]]がないか、それが [[script-created parser]] でないなら、
ここで停止します。
= [[文書]]の[[構文解析器]]の[[入力ストリーム]]の終わりに[[明示的「EOF」文字]]を挿入します。
= [[pending parsing-blocking script]] があれば、ここで停止します。
= [[字句化器]]を走らせ、 [[emit]] された[[字句]]を処理します。
[[字句化器]]が[[明示的「EOF」文字]]に到達するか、
[[イベントループをスピン]]するまで処理を続けます。
]FIG]

[7] [[スピン]]が発生する状況を整理すると、[[字句化器]]の停止するのは
[[EOF]] [[文字]]まで (つまり最後まで) 処理が進んだ場合と、
[CODE(HTMLe)@en[[[script]]]] [[要素]]の処理でそれ以上進めなくなったら、
ということになります。
(特別なことを要求されているように思えますが、通常通り処理できるところまで進むだけでOKです。)

;; [4] [[fetch]] 待ちの[[スクリプト]]があるなど[[構文解析]]が継続できなくなったら、
[[構文解析器]]は[[イベントループをスピン]]します。

* レンダリング

[6] [[構文解析器]]を通じて[[文書]]や [[busy indicator]] の表示に影響をあたえることがあります。

;; [[レンダリングの開始]]も参照。

* 歴史

[1] [CITE@en[Web Applications 1.0 r4241  Make document.close() more evil.]] ([TIME[2009-10-21 17:31:00 +09:00]] 版) <https://html5.org/r/4241>

[8] [CITE@en[Make document.open() and close() check for an XML document · whatwg/html@0ee9935]]
([TIME[2016-03-23 21:23:25 +09:00]] 版)
<https://github.com/whatwg/html/commit/0ee993535960c18ea154ab6ec37fa62edcad1057>

[11] [CITE@en[Formalize custom element reactions · whatwg/html@27aa7bc]]
([TIME[2016-04-26 18:51:49 +09:00]] 版)
<https://github.com/whatwg/html/commit/27aa7bc4fa6f168654a8c858f0773e611f679b39>

[12] [CITE@en[Make document.write etc. throw during parsing custom elements]]
([[domenic]]著, [TIME[2016-08-17 15:44:39 +09:00]])
<https://github.com/whatwg/html/commit/00c6fa07bdb9f0d08a28f6c6e1ababca7d08618c>