Document.write()

Document.write() メソッドは、テキストの文字列を document.open() で開かれた文書ストリームに書き込みます。

メモ: document.write() は文書のストリームに書き込みを行うため、閉じられた (読み込み済みの) 文書で document.write() を呼び出すと、自動的に document.open() が呼び出され、文書はクリアされます

構文

js
document.write(markup);

引数

markup

文書に書き込まれるテキストを含む文字列です。

html
<html>
  <head>
    <title>書き込み例</title>

    <script>
      function newContent() {
        document.open();
        document.write("<h1>新しい内容では、古い内容は削除されます!</h1>");
        document.close();
      }
    </script>
  </head>

  <body onload="newContent();">
    <p>元の文書コンテンツ。</p>
  </body>
</html>

出力したテキストは文書構造モデルにおいて構文解析されます。上記の例では、 h1 要素は文書中の一つのノードになります。

document.open() を呼び出さずに読み込まれた文書へ書き込みを行うと、自動的に document.open() の呼び出しが実行されます。一度出力し終わったとき、ブラウザーにページの読み込みの終了を伝えるために、 document.close() を呼び出すことが推奨されます。

document.write() の呼び出しがインラインの HTML の <script> タグ内で行われた場合、 document.open() は呼び出されません。次に例を示します。

html
<script>
  document.write("<h1>Main title</h1>");
</script>

メモ: document.write() および document.writeln は、 XHTML 文書では動作しません (エラーコンソールに "Operation is not supported" [NS_ERROR_DOM_NOT_SUPPORTED_ERR] エラーが表示されます)。これは、 .xhtml の拡張子を持つローカルファイルを開いたり、何らかの文書が application/xhtml+xmlMIME タイプで提供されたときに発生します。詳細は W3C XHTML FAQ で確認することができます。

メモ: document.writedeferred または asynchronous のスクリプト内では無視され、エラーコンソールに "A call to document.write() from an asynchronously-loaded external script was ignored" などのメッセージが表示されます。

メモ: Edge のみ、document.write()<iframe> 内で複数回呼び出すと、 SCRIPT70: Permission denied エラーが発生します。

メモ: Chrome 55 からは、キャッシュされていない HTTP の場合、document.write() を通じて挿入された <script> 要素は実行されなくなります。これが成立するのに必要な条件の一覧については、document.write() に対する介入をご覧ください。

仕様書

Specification
HTML Standard
# dom-document-write-dev

ブラウザーの互換性

BCD tables only load in the browser

関連情報