此页面由社区从英文翻译而来。了解更多并加入 MDN Web Docs 社区。
Document:write() 方法
警告:强烈不建议使用document.write() 方法。
这种方法具有非常特殊的行为。在某些情况下,当解析器运行时,此方法可能会影响HTML 解析器的状态,导致生成的 DOM 与文档源代码不符(例如,如果写入的字符串为“
<plaintext>”或者“<!--”)。其他情况下,该调用可能会先清除当前页面,就像调用了document.open()一样。更多情况下,该方法会被直接忽略或抛出异常。用户代理被明确允许避免执行通过此方法插入的script元素。更糟糕的是,这种方法的确切行为在某些情况下取决于网络延迟,这可能导致难以调试的故障。鉴于上述原因,我们强烈反对使用这种方法。因此,避免使用document.write()——如果允许的话,更新仍在使用它的任何现有代码。
document.write() 方法将文本字符串写入由document.open() 打开的文档流。
备注:因为document.write() 会向文档流中写入内容,所以在已关闭(已加载)的文档上调用document.write() 会自动调用document.open(),这将清空文档。
In this article
语法
write(markup)参数
markup包含要写入文档的文本的字符串。
返回值
无(undefined)。
示例
<html lang="zh-CN"> <head> <title>编写示例</title> <script> function newContent() { document.open(); document.write("<h1>旧的不去,新的不来!</h1>"); document.close(); } </script> </head> <body onload="newContent();"> <p>一些原始文档内容。</p> </body></html>备注
你编写的文本会被解析为文档结构模型。在上面示例中,h1 元素成为文档中的一个节点。
在未调用document.open() 的情况下,向已加载的文档写入内容将自动调用document.open()。写入后,调用document.close() 告诉浏览器完成页面加载。
如果document.write() 调用嵌入了行级 HTML<script> 标签,则不会调用document.open()。例如:
<script> document.write("<h1>主标题</h1>");</script>备注:document.write() 和document.writeln 在 XHTML 文档中无法正常工作(你会在控制台收到“Operation is not supported”(NS_ERROR_DOM_NOT_SUPPORTED_ERR)的错误)。当以 .xhtml 文件扩展名打开本地文件或任何使用 application/xhtml+xmlMIME 类型的文档时,就会出现这种情况。更多详细信息,请参阅W3C XHTML 常见问题解答。
备注:在延迟或异步脚本中使用document.write() 将被忽略,并且你会在错误控制台中收到类似于“A call todocument.write() from an asynchronously-loaded external script was ignored”的消息。
备注:仅在 Edge 中,在<iframe> 中多次调用document.write() 会导致错误“SCRIPT70: Permission denied”。
备注:从 55 版本开始,当满足特定条件时,Chrome 将不会执行通过<script> 元素中的document.write()。有关详细信息,请参阅干预 document.write()。
规范
| Specification |
|---|
| HTML> # dom-document-write-dev> |