[82] document.write
は、
動作中の構文解析器の入力ストリームに文字列を挿入する JavaScript
メソッドです。
[83] DOM0 時代には、 document.write
は文書の内容を任意に書き換える唯一の方法でした。
その後の DOM API の整備により、構文解析器の動作中に限らず文書の任意の部分を書き換えられるようになったため、
document.write
は徐々に使われなくなりました。
[84] 構文解析器が構文解析の進行中に script
要素のスクリプトを実行し、そこから document.write
によって入力ストリームにスクリプトが介入できるため、
構文解析器の動作が複雑になる要因の1つとなっています。
[62] Document
インターフェイスの
write
メソッドは、
次のようにしなければなりません >>10。
[73] Document
インターフェイスの
writeln
メソッドは、
次のようにしなければなりません >>10。
[96] document write steps は、文書と入力を次のようにします。
[9] 文書は ignore-destructive-writes counter を持ちます。 その初期値は0です。 >>10
document.write
呼び出しなら)
reload override buffer に追記しないようです。
(そうしないと再読込後に document.write
された部分が二重になってしまいます。)
[1] 仕様書:
[2] HTML 4 の 18.2.4 は文書読込み時に実行されるスクリプトによる文書内容の動的な編集について触れています。
そこでは document.write
はその実現手段の一例として挙げられていますが、
実用的なレベルで存在したもので該当するのは他になかったでしょうし、
DOM が整理される以前の規定ですから、
document.write
と HTML 文書・UA の関係に関する規定と捉えてよいでしょう。
また、一般の DOM による操作等は想定範囲外でしょうから、
拡大して解釈することには慎重であるべきと考えられます。
さて、 18.2.4 によれば、文書の動的な編集は次の通りモデル化できるそうです。
script
が、
文書の読込まれる順序で評価されます。CDATA
を生成する script
要素中のスクリプト構造がすべて評価されます。
その生成文を結合したものが文書中の script
要素の場所に挿入されます。CDATA
が再評価されます。[118] このモデルは、 SGML構文解析器で HTML 文書から木構造を抽出し、 それを HTML 仕様書の規定する意味と表現によってレンダリングするという SGML 的に本来あるべき UA の処理方法ではなく、 HTML 文書を適当に読込みながら適当に解析しつつ適当にレンダリングし続けるという WWW ブラウザの伝統的な処理方法に依拠しているように思えます。
[18] HTML 4 仕様書に示された例によれば、
<TITLE>Test Document</TITLE> <SCRIPT type="text/javascript"> document.write("<p><b>Hello World!<\/b>") </SCRIPT>
は
<TITLE>Test Document</TITLE> <P><B>Hello World!</B>
という HTML マークと同じ効果を持ちます。効果
という曖昧な言葉を使っているため、
何を指しているのか (レンダリング結果? 出来上がる構造?) はっきりとはしませんが、
ともかくある意味においてこの2例は HTML 的に等価です。
ところが、 SGML 的には、前者は
<HTML><HEAD> <TITLE>Test Document</TITLE> <SCRIPT type="text/javascript"> document.write("<p><b>Hello World!<\/b>") </SCRIPT> </HEAD></HTML>
と等価 (完全に交換可能) であり、
後者は
<HTML><HEAD> <TITLE>Test Document</TITLE> </HEAD><BODY><P><B>Hello World!</B> </BODY></HTML>
と等価ですから、両者は異なる構造を持っています。そして、
document.write
の結果は常に body
内に書込まれるとか (これは先のモデルと矛盾します。)、
head
内にも p
要素が含められるとか
(これは HTML DTD と矛盾します。) の仮定を置かない限り、
適切な結果が得られません。
[3] HTML 4 は、次のようにも述べています。
HTML 文書は、
script
要素の処理の前後いずれにおいても HTML DTD に適合するよう制約されます。
script
の出力であるからといって
ul
要素の子供に td
要素があっても困りますから、これは当然の規定といえましょう。
しかし、ここで、 >>2 とも関係しますが、
処理後の適合性は何について判断するのかという疑問が生じます。
<TITLE>Test Document</TITLE> <SCRIPT type="text/javascript"> document.write("<p><b>Hello World!<\/b>") </SCRIPT>
が >>2 の SGML 的解釈のように
<HTML><HEAD> <TITLE>Test Document</TITLE> <p><b>Hello World!</b> </HEAD></HTML>
となるなら、 (body
要素がないことには目をつぶっても)
head
要素内に p
要素を入れることはできないので、非妥当です。しかし、
一旦
<TITLE>Test Document</TITLE> <p><b>Hello World!</b>
となり、更に
<HTML><HEAD> <TITLE>Test Document</TITLE> </HEAD><BODY><p><b>Hello World!</b> </BODY></HTML>
と解釈されるなら、この文書片は妥当です。
また、
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> ... <script type="text/javascript"> document.write ('<p>'); </script> A paragraph. ...
は、果たして
<p> A paragraph? </p>
でしょうか、
<p></p> A paragraph?
でしょうか。 (この例はどちらの解釈でも結果は妥当です。)
[4] スクリプト実行結果の静的妥当性検証: >>2-3 のような仕様の解釈に関する問題があるとはいえ、 ある解釈を選べば、ある文書がスクリプト実行後に DTD 妥当であるか否かはスクリプトを実際に実行してみれば容易に判断できます。
一方で、スクリプトを実行せずとも出力が妥当であるかどうかを検証できれば、
(document.write
はもう使われなくなっていますが、
CGIスクリプトなどにも応用できますから) 便利かもしれません。
実際にその方法を研究していた人もいたようですが、
良い方法は見つかっていません。
[5] スクリプト実行後の文書構造: 現代の UA などは文書をその構造によって保持しています。 HTML 文書は読込まれると構文解析されて DOM などのモデルによる木として記憶上で持っているか、 持っているかのように操作できるようになっています。
そうすると、 >>2 の規定を忠実に解釈すると、結果の文書木に
script
要素は含まれないことになってしまいます。
?? WinIE や Gecko はどうしている ??
また、 document
物体は DOM の Document
界面の物体 (文書要素に対応する物体) として再定義されてしまったので、
文書木が完成する前には存在しない虞があります (解析しながら木を作っているなら、
あるかもしれません)。
[6] 内在事象取扱器で document.write
すると、
新しい文書が作られてそこに書かれるそうです 18.2.3 Note。
それもまたおかしな話です。
[8]
空繰再繰 - application/xhtml+xmlなページでdocument.writeを動作させる #2 (2007-05-01 11:21:43 +09:00
版) http://nyarla.net/blog/javascript-tips6
(名無しさん 2007-05-01 02:24:18 +00:00)
[50] document.writeを完全にDOM仕様にする - 空繰再繰 ( 版) http://blog.nyarla.net/2007/11/17/1
[7]
d:id:quaa (2006-11-28 10:39:05 +09:00
版) http://d.hatena.ne.jp/quaa/20061227#p1
(名無しさん 2006-12-28 01:52:17 +00:00)
[11] http://software.hixie.ch/utilities/js/live-dom-viewer/?%3Cscript%3E%0Adocument.write%20('%3Cstyle%3E%20p%20%7Bcolor%3A%20green%20%7D%20%3C%2Fst')%3B%0A%3C%2Fscript%3Eyle%3E%0A%3Cp%3EPASS%20iff%20green%3C%2Fp%3E
[12] http://software.hixie.ch/utilities/js/live-dom-viewer/?%3Cscript%3E%0Adocument.write%20('%3Cstyle%3E%20p%20%7Bcolor%3A%20gr')%3B%0A%3C%2Fscript%3Eeen%20%7D%20%3C%2Fstyle%3E%0A%3Cp%3EPASS%20iff%20green%3C%2Fp%3E
[13] http://software.hixie.ch/utilities/js/live-dom-viewer/?%3Cp%3EFAIL%3C%2Fp%3E%0A%3Cscript%20defer%3E%0A%20%20document.write%20('%3Cstyle%3Ep%20%7Bcolor%3A%20green%7D%3C%2Fstyle%3E')%3B%0A%3C%2Fscript%3E%0A%3Cscript%20defer%3E%0A%20%20document.write%20('%3Cp%3EPASS%20iff%20green%3C%2Fp%3E')%3B%0A%3C%2Fscript%3E%20%0A%3Cstyle%3E%0Ap%20%7B%20color%3A%20red%20%7D%0A%3C%2Fstyle%3E
WinIE 7 は DOM view はただしいが、なぜか Rendered view には何もレンダリングされない。
[14]
>>13 の WinIE 7 でレンダリングされないのは
script
が2つあるかららしく、
http://software.hixie.ch/utilities/js/live-dom-viewer/?%3Cp%3EFAIL%3C%2Fp%3E%0D%0A%3Cscript%20defer%3E%0D%0A%20%20document.write%20('%3Cstyle%3Ep%20%7Bcolor%3A%20green%7D%3C%2Fstyle%3E')%3B%0D%0A%20%20document.write%20('%3Cp%3EPASS%20iff%20green%3C%2Fp%3E')%3B%0D%0A%3C%2Fscript%3E%20%0D%0A%3Cstyle%3E%0D%0Ap%20%7B%20color%3A%20red%20%7D%0D%0A%3C%2Fstyle%3E
ならレンダリングされる。
[15] http://software.hixie.ch/utilities/js/live-dom-viewer/?%3Cp%3EFAIL%3C%2Fp%3E%0D%0A%3Cscript%20defer%3E%0D%0A%20%20document.write%20('%3Cstyle%3Ep%20%7Bcolor%3A%20green%7D%3C%2Fstyle%3E')%3B%0D%0A%20%20document.write%20('%3Cp%3EPASS%20iff%20green%3C%2Fp%3E')%3B%0D%0A%3C%2Fscript%3E%20%0D%0A%3Cscript%3E%0D%0A%20%20document.write%20('%3Cstyle%3Ep%20%7B%20color%3A%20red%20%7D%3C%2Fstyle%3E')%3B%0D%0A%20%20document.write%20('%3Cp%3EFAIL%3C%2Fp%3E')%3B%0D%0A%3C%2Fscript%3E
document.write
というより
defer
のテスト。
WinIE 7 は PASS。
後の script
内に alert()
を入れれば、
ちゃんと後の script
も実行されていることが確認できる。
[16] http://software.hixie.ch/utilities/js/live-dom-viewer/?%3Cscript%3E%0A%20%20document.write%20('%3Cscript%3E%20document.write%20(%22aa%22)%3B%20%3C%2Fsc')%3B%0A%20%20document.write%20('ript%3E')%3B%0A%3C%2Fscript%3E
Firefox 2 でも WinIE 7 でも、 script
内の script
が実行され、aa
とレンダリング」」されます。
HTML 5 の構文解析算法でも、ややこしいですがおそらく、
aa
と「「レンダリング]]されるのが正しい動作です。
(1つ目の [document.write
によって行われる構文解析で、与えられた「「引数]]の末尾に到達したところで、
挿入点に到着したということで字句化器が停止します。
木構築段階は script
開始タグが現れると文字字句を集め続けますが、
それは字句化器が停止したところで一旦終わるので、
</script
終了タグ」」の直前までいきます。ここで、 document.write
は返るのですが、
それによって外側の構文解析が再開されます。そして、
次の字句が script
の終了タグになるので、
木構築段階の script
開始タグの処理の続きで、スクリプトが実行されます。)
[17] http://software.hixie.ch/utilities/js/live-dom-viewer/?%3Cscript%3E%0A%20%20document.write%20('%3Cstyle%3E%20p%20%7B')%3B%0Aw(document.documentElement.innerHTML)%3B%0A%20%20document.write%20('color%3A%20gree')%3B%0Aw(document.documentElement.innerHTML)%3B%20%0A%20%20document.write%20('n%20%7D')%3B%0A%3C%2Fscript%3E%3C%2Fstyle%3E%3Cp%3Exxxx
WinIE 7 でも Firefox 2 でも、緑のxxxx
がレンダリングされます。
[19] http://software.hixie.ch/utilities/js/live-dom-viewer/?%3Cscript%3E%0A%20%20document.write%20('%3Cstyle%3E')%3B%0Aw%20(document.documentElement.innerHTML)%3B%0A%20%20document.write%20('color%3A%20gree')%3B%0Aw%20(document.documentElement.innerHTML)%3B%20%0A%20%20document.write%20('n%20%7D')%3B%0A%3C%2Fscript%3E%3C%2Fstyle%3E%3Cp%3Exxxx%0A%3Cscript%3E%0Aw%20(document.documentElement.innerHTML)%3B%20%0A%3C%2Fscript%3E%0A%3Cpre%3E%0Axxxx
document.write
による追加分が DOM 木に反映されるのはいつか?
(ここでは innerHTML
を使用。)
(名無しさん)
[20]
>>19 WinIE 7 で style
要素の sheet
属性は null
になっているようです。
(名無しさん)
[21]
>>20 訂正: styleSheet
属性。
(名無しさん)
[22]
>>19 Opera 9.27、Safari 3.1.1 では、
WinIE 7 同様、終了タグを処理するまでは空のままのようです。
sheet
属性は空のスタイル・シートになっているようです。
(名無しさん)
[23]
>>22 sheet
属性の指すスタイル・シートは終了タグが処理されるまでずっと空のままのようです。
(名無しさん)
[24]
document.write ('<pre>\na</pre>')
http://software.hixie.ch/utilities/js/live-dom-viewer/?%3Cscript%3E%0D%0A%20%20document.write%20('%3Cpre%3E%5Cna%3C%2Fpre%3E')%3B%0D%0A%3C%2Fscript%3E
WinIE 7, Firefox 2, Opera 9.27, Safari 3.1.1 のいずれも、 開始タグ直後の改行を無視。 (名無しさん)
[25]
document.write ('<pre>'); document.write ('\na</pre>')
http://software.hixie.ch/utilities/js/live-dom-viewer/?%3Cscript%3E%0A%20%20document.write%20('%3Cpre%3E')%3B%0A%20%20document.write%20('%5Cna%3C%2Fpre%3E')%3B%0A%3C%2Fscript%3E
>>24 の4ブラウザ中、Firefox 2 だけは改行を無視せず。 (名無しさん)
[26]
document.write ('<pre>', '\na</pre>');
http://software.hixie.ch/utilities/js/live-dom-viewer/?%3Cscript%3E%0A%20%20document.write%20('%3Cpre%3E'%2C%20'%5Cna%3C%2Fpre%3E')%3B%0A%3C%2Fscript%3E
これなら Firefox 2 も改行を無視する。 (名無しさん)
[27]
document.writeln ('<pre>'); document.write ('a</pre>');
http://software.hixie.ch/utilities/js/live-dom-viewer/?%3Cscript%3E%0A%20%20document.writeln%20('%3Cpre%3E')%3B%0A%20%20document.write%20('a%3C%2Fpre%3E')%3B%0A%3C%2Fscript%3E
だけどこっちは Firefox 2 が改行を無視しない。 (名無しさん)
[28] Opera 9.27 と Safari 3.1.1 の結果
>>16 同じ (実行される)
(名無しさん)
[29]
>>19 みたいなことを script
要素を書き出す場合でやってみた
http://software.hixie.ch/utilities/js/live-dom-viewer/?%3Cscript%3E%0Aw%20(document.documentElement.innerHTML)%3B%0A%20%20document.write%20('%3Cscript%3E%20document.')%3B%0Aw%20(document.documentElement.innerHTML)%3B%0A%20%20document.write%20('write%20(%22a%22)%3B%20%3C%2F'%20%2B%20'script%3E')%3B%0Aw%20(document.documentElement.innerHTML)%3B%0A%3C%2Fscript%3E
4ブラウザとも、 script
要素が
innerHTML
に現れるのは終了タグが処理されたあとのようです。
この例だと Safari だけは3番目の w
で生成された
script
要素によって書き込まれた
a
が反映されていないのですが、
これはその script
要素が実行されていないわけではなく、
文字データを書いても次のタグなどが現れるまで
DOM に追加されないという (Safari だけの) 動作のためのようです。
(名無しさん)
書き出される script
要素が実行される時点での
innerHTML
は?
http://software.hixie.ch/utilities/js/live-dom-viewer/?%3Cscript%3E%0D%0A%20%20document.write%20('%3Cscript%3E%20w%20(document.documentElement.innerHTML)%3B%20document.')%3B%0D%0A%20%20document.write%20('write%20(%22a%22)%3B%20%3C%2F'%20%2B%20'script%3E')%3B%0D%0A%3C%2Fscript%3E
書き出された script
要素が DOM
に追加された状態の innerHTML
が出てくるようです。
(名無しさん)
[32]
script
の途中からが外側の
script
要素の後にいっていてもよいのか?
http://software.hixie.ch/utilities/js/live-dom-viewer/?%3Cscript%3E%0A%20%20document.write%20('%3Cscript%3E%20w%20(document.documentElement.innerHTML)%3B%20document.')%3B%0A%20%20document.write%20('write%20(%22a')%3B%0A%3C%2Fscript%3E%22)%3B%20%3C%2Fscript%3E
4ブラウザともおk (script
要素の続きとみなす) のようです。
(名無しさん)
[33]
わけがわからないくらい複雑な例 with script
src
http://software.hixie.ch/utilities/js/live-dom-viewer/?%3Cscript%20src%3D%22javascript%3A'%20document.write%20(%26quot%3Baaaaa%26quot%3B)%3B%20'%22%3E%3C%2Fscript%3E%0A%3Cscript%3E%0A%20%20document.write%20(%22%3Cscript%3Edocument.write%20('%3Cscript%20src%3Djavascript%3A%26apos%3Bdocument.write(%26quot%3Baaaaa%26quot%3B)%3B%26apos%3B%3E%3C%2F'%2C%20'script%3E%3Cscript%3E%20document.wri')%3B%3C%2F%22%2C%20%22script%3E%22)%3B%0A%3C%2Fscript%3Ete%20('ccc')%3B%20%3C%2Fscript%3E
Firefox 2 では、最初の
script
要素があるかないか
(javascript:
URI を使っていることに起因している模様)、
Live DOM Viewer 内で見るかどうか、
Live DOM Viewer でも直接入力か permalink 使用かによって結果が変わってくる
(2つ目の script
による書き込みが反映されたりされなかったりする、というか script
が DOM
に現れなかったり、 body
が2つでてきたり、よくわからん。) ようです。
(名無しさん)
[34]
>>33 他の3ブラウザはいずれも ccc
とだけでてきます。
Safari と WinIE は、
src
内の javascript:
URI を実行していないようです。 Opera は外部スクリプト内の
document.write
を実行していないようです。
(名無しさん)
[35]
>>34 Opera は document.write
を実行しないのではなく、
javascript:
URI を実行はするのですが、
最後に得られた文字列を外部スクリプトとみなすのではないようで、
エラーコンソールに
リンク先のスクリプトを読み込むことができません
とでてきます。
(名無しさん)
[36] http://software.hixie.ch/utilities/js/live-dom-viewer/?%3Cscript%20src%3D%22javascript%3A%20document.write%20('x')%3B%20%22%3E%3C%2Fscript%3E%20%20%20
Firefox の src
内の javascripot:
URI の実行される文脈では文書本体の Global
物体とは違うものを使っているようで、
window
にも document
にもその他大域変数にもアクセスできません
(ReferenceError
になります)。
(名無しさん)
[37]
Hixie's Natural Log: Tag Soup: Blocks-in-inlines (2008-04-25 22:46:42 +09:00
版) http://ln.hixie.ch/?start=1138169545&count=1
(名無しさん)
[38]
Hixie's Natural Log: Why document.write() doesn't work in XML (2008-04-25 22:48:57 +09:00
版) http://ln.hixie.ch/?start=1091626816&count=1
(名無しさん)
[39]
Hixie's Natural Log: Tag Soup: appendChild() of a script that calls document.write() (2008-04-25 22:49:24 +09:00
版) http://ln.hixie.ch/?start=1155195074&count=1
(名無しさん)
[40]
Index of /tests/adhoc/dom/level0/write (2008-04-25 23:07:32 +09:00
版) http://hixie.ch/tests/adhoc/dom/level0/write/
(名無しさん)
[42]
document.write
で始まった
CDATA
内容モデル旗とそのスクリプトの終了タグの関係は?
http://software.hixie.ch/utilities/js/live-dom-viewer/?%3Cscript%3E%0A%20%20document.write%20(%22%3Cstyle%3E%20p%20%7B%22)%3B%0A%20%20w%20(document.documentElement.innerHTML)%3B%0A%3C%2Fscript%3E%20color%3A%20green%3B%0A%3Cscript%3E%0A%20%20document.write%20('%7D%20%3C%2Fstyle%3E')%3B%0A%3C%2Fscript%3E%3Cp%3Exxxx%0A
4ブラウザとも、</script>
以後も内容モデル旗は
CDATA
にしたまま処理を続行するようで、
次の <script>
開始タグは開始タグではなく、
文字データとして処理します。
(名無しさん)
[43]
Live Scripting HTML Parser (2008-04-27 20:27:04 +09:00
版) http://suika.fam.cx/www/markup/html/scripting-parser/parser
(名無しさん)
[44]
Bug 95487 – JavaScript-generated table never completes (2008-06-18 09:05:55 +09:00
版) https://bugzilla.mozilla.org/show_bug.cgi?id=95487
(名無しさん)
[45]
document.write()の実行タイミングをずらす方法 (2008-06-22 15:16:43 +09:00
版) http://p2b.jp/index.php?UID=1153728573
(名無しさん)
[46]
最速インターフェース研究会 :: ページレンダリングを妨げないdocument.writeの実装 (2008-06-22 15:21:04 +09:00
版) http://la.ma.la/blog/diary_200612061928.htm
(名無しさん)
[47]
Fenrir's BLog: Ajaxでdocument.writeするJavaScriptへの対策 (2008-06-02 14:24:53 +09:00
版) http://fenrir.naruoka.org/archives/000555.html
(名無しさん)
[48]
野ログはノロキュアMaxHeart - document.writeをバッファリングするJavaScript (nog 著, 2008-04-18 09:41:41 +09:00
版) http://cureblack.com/20080418.html#p01
(名無しさん)
[49] Javascriptの外部ファイル内でdocument.writeしたら文字化け(Mac IE 4.5編) ( 版) http://www.shtml.jp/mojibake/macie45.html
[51] Web Applications 1.0 r5616 Change how document.write() is ignored.Fixing http://www.w3.org/Bugs/Public/show_bug.cgi?id=9767 ( ( 版)) http://html5.org/tools/web-apps-tracker?from=5615&to=5616
[52] IRC logs: freenode / #whatwg / 20101013 ( ( 版)) http://krijnhoetmer.nl/irc-logs/whatwg/20101013
[53] Web Applications 1.0 r6924 More tweaks to the text (including a comment that describes one of the situations in question).Fixing https://www.w3.org/Bugs/Public/show_bug.cgi?id=14275 ( ( 版)) http://html5.org/tools/web-apps-tracker?from=6923&to=6924
[54] [whatwg] HTMLLinkElement.disabled and HTMLLinkElement.sheet behavior ( ( 版)) http://lists.whatwg.org/pipermail/whatwg-whatwg.org/2012-August/037001.html
[55] Web Applications 1.0 r7290 Change how <script> is handled in re-entrant parser situations when there's a blocking style sheet. ( ( 版)) http://html5.org/tools/web-apps-tracker?from=7289&to=7290
[56] Web Applications 1.0 r7757 Try to define when document.open() doesn't work more precisely. ( ( 版)) http://html5.org/tools/web-apps-tracker?from=7756&to=7757
[57] Web Applications 1.0 r7869 Make document.write() a no-op on non-active documents. ( ( 版)) http://html5.org/tools/web-apps-tracker?from=7868&to=7869
<SCRIPT Language="JavaScript"> <!-- document.writeln('<form NAME="9reki" method="POST" action="' + CGISERVER + 'cgi/9reki_f.cgi">'); // --> </SCRIPT>
[60] bug 5562 – 無限にdocument.write()を繰り返してメモリを食いつぶしていくと再パース処理でクラッシュする ( ( 版)) http://bugzilla.mozilla.gr.jp/show_bug.cgi?id=5562
[61] 430574 – Infinite document.write() loop hangs, fills memory, and crashes ( ( 版)) https://bugzilla.mozilla.org/show_bug.cgi?id=430574
[80] IRC logs: freenode / #whatwg / 20150528 ( 版) http://krijnhoetmer.nl/irc-logs/whatwg/20150528
[81] Formalize custom element reactions · whatwg/html@27aa7bc ( 版) https://github.com/whatwg/html/commit/27aa7bc4fa6f168654a8c858f0773e611f679b39
JavaScript
[85] Clarify the note about reentrant parsing in document.write() (domenic著, ) https://github.com/whatwg/html/commit/d6630fe808e48898108dc671025c0bcad5048cc3
[86] Make document.write etc. throw during parsing custom elements (domenic著, ) https://github.com/whatwg/html/commit/00c6fa07bdb9f0d08a28f6c6e1ababca7d08618c
[87] Make document.write etc. throw during parsing custom elements (domenic著, ) https://github.com/whatwg/html/commit/00c6fa07bdb9f0d08a28f6c6e1ababca7d08618c
[94] For users on very slow connections, block document.written scripts · Issue #17 · WICG/interventions () https://github.com/WICG/interventions/issues/17
[95] Editorial: refactor document.open()/write()/writeln() (annevk著, ) https://github.com/whatwg/html/commit/d43b7050b4fe83ebce7724ea005e4707f06a86f7
[108] Allow not executing scripts inserted by document.write() (domenic著, ) https://github.com/whatwg/html/commit/15b258dc74ffe1ba321b81a1c876f129681a97c2
[109] For users on very slow connections, block document.written scripts · Issue #17 · WICG/interventions () https://github.com/WICG/interventions/issues/17
[110] Allow not executing scripts inserted by document.write() by domenic · Pull Request #1400 · whatwg/html () https://github.com/whatwg/html/pull/1400
[111] Intervening against document.write() | Web | Google Developers () https://developers.google.com/web/updates/2016/08/removing-document-write
[70] document.open() simplifications, part 2 (TimothyGu著, ) https://github.com/whatwg/html/commit/ae7cf0cc1936c6c309d7279c822dffc3af147851
[71] Remove overridden reload concept (TimothyGu著, ) https://github.com/whatwg/html/commit/6440ccae7340ea41d3eb5bf8ff0b3b27363eda85
[74] document.open() simplifications, part 2 by TimothyGu · Pull Request #3946 · whatwg/html () https://github.com/whatwg/html/pull/3946
[75] Allow document.open()/write() to be called on non-active documents (TimothyGu著, ) https://github.com/whatwg/html/commit/ad541d6a5e74f56dccedc56d50750adb65184505
[66] Extend document.open/write to non-active documents · Issue #2827 · whatwg/html () https://github.com/whatwg/html/issues/2827
[91] Allow document.open() to be called on non-active documents by TimothyGu · Pull Request #3977 · whatwg/html () https://github.com/whatwg/html/pull/3977
[98] Ignore document.open/write after the active parser has been aborted (foolip著, ) https://github.com/whatwg/html/commit/ead4aa8ec576d7d330a04f7ec8508e336b895fdb
[115] Consider adding an "ignore document.open/write" flag on document · Issue #4723 · whatwg/html · GitHub () https://github.com/whatwg/html/issues/4723
[116] Ignore document.open/write after the active parser has been aborted by foolip · Pull Request #4907 · whatwg/html · GitHub () https://github.com/whatwg/html/pull/4907
document.write
によって新たにscript
要素を注入することも可能です。