Document: open() method

The method opens a document for writing.

This does come with some side effects. For example:

  • All event listeners currently registered on the document, nodes inside the document, or the document's window are removed.
  • All existing nodes are removed from the document.





Return value

A Document object instance.


The following simple code opens the document and replaces its content with a number of different HTML fragments, before closing it again.

document.write("<p>Hello world!</p>");
document.write("<p>I am a fish</p>");
document.write("<p>The number is 42</p>");


An automatic call happens when document.write() is called after the page has loaded.

Content Security

This method is subject to the same same-origin policy as other properties, and does not work if doing so would change the document's origin.


There is a lesser-known and little-used three-argument version of, which is an alias of (see its page for full details).

This call, for example opens in a new window, with its opener set to null:

js"", "", "noopener=true");


Browsers used to support a two-argument, with the following signature:

js, replace);

Where type specified the MIME type of the data you are writing (e.g. text/html) and replace if set (i.e. a string of "replace") specified that the history entry for the new document would replace the current history entry of the document being written to.

This form is now obsolete; it won't throw an error, but instead just forwards to (i.e. is the equivalent of just running it with no arguments). The history-replacement behavior now always happens.


HTML Standard
# dom-document-open-dev

Browser compatibility

BCD tables only load in the browser

See also