document.write()是什么作用?

11

这是一个非常基础的问题。 我有这个脚本:

    <script type="text/javascript">
        function write(){
            document.write('Hello2')
        }
        write();
    </script>

它显示了我的完整页面。在页面末尾将显示Hello2。 但是,每当我进入开发者工具并调用write()时,它将替换我的整个HTML主体。只是好奇想知道。

        window.onload=write;// has the same effect. Clear's my page.

谢谢。

3个回答

20
当浏览器读取和解析文档时,如果有一个调用document.writescript元素,则document.write的输出将插入到该点的文档中。但是,一旦页面完全加载后,如果使用document.write,它隐式执行document.open,这会清除页面并从头开始编写新页面。
更多信息请参见MDN:

通常情况下,不要使用document.write来向页面添加内容,而是使用各种DOM方法(直接或通过类库如jQueryYUIClosure其他几个)。


“once the page is fully loaded”是什么意思?它的定义是什么?能保证在<body onload>运行前,“页面已完全加载”吗? - Pacerier
@Pacerier:“你说的‘页面完全加载完成’是什么意思?”解析器已经到达文档末尾。“在<body onload运行之前,‘页面完全加载完成’是否得到保证?”是的。body上的load事件发生在页面加载过程的非常晚的阶段。 - T.J. Crowder
这种行为是否有文档说明,还是只是“看起来是这样运作的”? - Pacerier
如果将 document.write 放在 body onload 中,它的行为肯定会重写整个页面。 - Pacerier
@Pacerier:那应该是HTML5规范中的Web API部分。 - T.J. Crowder
显示剩余2条评论

7

0

document.write会写入文档流,如果在已关闭(已加载)的文档上调用document.write,则会自动调用document.open,这将清除文档。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接