Javascript document.write() example
In this article we’ll consider some examples of using document.write() method.
This method is commonly used for testing and dynamically generating page content while it’s loading.
It’s a fast way to modify the document and may be used as an alternative to other approaches which are more suitable when the DOM is completely ready.
Take a look at one small example. This code just outputs custom text while executing the script:
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<script>
document.write("Custom text");
</script>
</body>
</html>
Now we’re going to add some tags. One should notice that the new div tag is appended right after the closing script tag:
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<script>
document.write("<div>Custom text</div>");
</script>
</body>
</html>
and it’s equal to
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<script>
</script><div>Custom text</div>
</body>
</html>
If we want to append ‘\n’ after the line, we can use document.writeln():
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<script>
<code>document.writeln("<div>First line</div>");</code>
<code>document.writeln("<div>Second line</div>");</code>
</script>
</body>
</html>
It is possible to pass several arguments to the method, for example:
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<script>
document.write("<ul>", // This is zero argument
"<li>First argument</li>",
"<li>Second argument</li>",
"</ul>",
new Date());
</script>
</body>
</html>
Avoid such situations. It’s pretty easy to make a mistake using closing tags:
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<script>
document.write("end of div from script</body>");
</script>
</div> <!-- this tag is missing -->
</body>
</html>
Let’s go deeper. When creating a new window, we can finish writing after the document was loaded. Next time you click the button, document will be overwritten
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<script>
var w = window.open();
w.document.open();
w.document.writeln("Started<br/>");
function finish() {
w.document.writeln("Finished");
w.document.close();
}
</script>
<button onclick="finish();">Finish</button>
</body>
</html>
We can even finish writing step by step:
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<script>
var wind = window.open();
var counter = 0;
wind.document.open();
wind.document.writeln("Started<br/>");
function finishStepByStep() {
if (counter > 3)
wind.document.close();
else
wind.document.writeln("Finished with counter = " + counter++ + "<br/>");
}
</script>
<button onclick="finishStepByStep();">Finish</button>
</body>
</html>
We can add scripts using document.write()!
Note that closing script tag in the string argument should be separated not to be interpreted by a browser as an end of scripting part (or one of the symbols should be replaced by its escape-sequence)
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<script>
document.write('<script>alert("lalala");</scr' + 'ipt>')
</script>
</body>
</html>
We can even call document.write() from document.write():
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<script>
document.write('<script>document.write("second level lalala");<\x2fscript>')
</script>
</body>
</html>
We can call the predefined function:
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<script>
function callAlert() {
alert("This is called from predefined function");
}
document.write('<script>callAlert();<\x2fscript>')
</script>
</body>
</html>
Try to avoid loading third-party scripts using document.write() because it can slow down page rendering.
You can download the full source code of this example here: JavascriptDocumentWrite


