document.close

document.close メソッド (DOM)

[5] document.close メソッドは、 document.open により作成した文書EOF を挿入します。

仕様書

処理

[3] Document インターフェイスclose メソッドは、次のようにしなければなりません >>2

  1. [9]
    ... のいずれかの場合、
    1. [10] InvalidStateError 例外投げ、ここで停止します。
  2. 文書構文解析器がないか、それが script-created parser でないなら、 ここで停止します。
  3. 文書構文解析器入力ストリームの終わりに明示的「EOF」文字を挿入します。
  4. pending parsing-blocking script があれば、ここで停止します。
  5. 字句化器を走らせ、 emit された字句を処理します。 字句化器明示的「EOF」文字に到達するか、 イベントループをスピンするまで処理を続けます。

[7] スピンが発生する状況を整理すると、字句化器の停止するのは EOF 文字まで (つまり最後まで) 処理が進んだ場合と、 script 要素の処理でそれ以上進めなくなったら、 ということになります。 (特別なことを要求されているように思えますが、通常通り処理できるところまで進むだけでOKです。)

[4] fetch 待ちのスクリプトがあるなど構文解析が継続できなくなったら、 構文解析器イベントループをスピンします。

レンダリング

[6] 構文解析器を通じて文書busy indicator の表示に影響をあたえることがあります。

歴史

[1] Web Applications 1.0 r4241 Make document.close() more evil. ( 版) <https://html5.org/r/4241>

[8] Make document.open() and close() check for an XML document · whatwg/html@0ee9935 ( 版) <https://github.com/whatwg/html/commit/0ee993535960c18ea154ab6ec37fa62edcad1057>

[11] Formalize custom element reactions · whatwg/html@27aa7bc ( 版) <https://github.com/whatwg/html/commit/27aa7bc4fa6f168654a8c858f0773e611f679b39>

[12] Make document.write etc. throw during parsing custom elements (domenic著, ) <https://github.com/whatwg/html/commit/00c6fa07bdb9f0d08a28f6c6e1ababca7d08618c>