There’s actually nothing wrong with
document.write, per se. The problem is that it’s really easy to misuse it. Grossly, even.
In terms of vendors supplying analytics code (like Google Analytics) it’s actually the easiest way for them to distribute such snippets
- It keeps the scripts small
- They don’t have to worry about overriding already established onload events or including the necessary abstraction to add onload events safely
- It’s extremely compatible
As long as you don’t try to use it after the document has loaded,
document.write is not inherently evil, in my humble opinion.