javascript - document.write错误?

Aak*_*thy 3 javascript window function onload

考虑一下脚本..

<html>
<head>
   <script type="text/javascript">
        document.write('TEST');
   </script>
</head>

<body>
    Some body content ...
</body>

</html>
Run Code Online (Sandbox Code Playgroud)

这工作正常,并将"TEST"一词添加到 <body>

但当

<script type="text/javascript">
    window.onload = function(){
        document.write('TEST');
    }
</script>
Run Code Online (Sandbox Code Playgroud)

使用,然后身体内容完全被单词'TEST'取代,即旧的身体内容被删除,只添加'TEST'这个词.

只有document.writewindow.onload函数内调用时才会发生这种情况

我在chrome中试过这个.我有什么错误吗?有什么建议 ?

And*_*y E 9

document.write()如果在文档完成解析并关闭后使用它是不稳定的.这种行为是不可预测的跨浏览器,你根本不应该使用它.使用innerHTMLcreateElement/ createTextNode来操作DOM .

Mozilla文档:

写入已加载但未调用document.open()的文档将自动执行document.open调用.完成编写后,建议调用document.close(),告诉浏览器完成加载页面.您编写的文本将解析为文档的结构模型.在上面的示例中,h1元素成为文档中的节点.

如果document.write()调用直接嵌入HTML代码中,那么它将不会调用document.open().

等效的DOM代码是:

window.onload = function(){
    var tNode = document.createTextNode("TEST");
    document.body.appendChild(tNode);
}
Run Code Online (Sandbox Code Playgroud)