Document:write() 方法
警告:
强烈不建议使用 document.write()
方法。
正如 HTML 规范本身所警告的:
这种方法具有非常特殊的行为。在某些情况下,当解析器运行时,此方法可能会影响 HTML 解析器的状态,导致生成的 DOM 与文档源代码不符(例如,如果写入的字符串为“
<plaintext>
”或者“<!--
”)。其他情况下,该调用可能会先清除当前页面,就像调用了document.open()
一样。更多情况下,该方法会被直接忽略或抛出异常。用户代理被明确允许避免执行通过此方法插入的script
元素。更糟糕的是,这种方法的确切行为在某些情况下取决于网络延迟,这可能导致难以调试的故障。鉴于上述原因,我们强烈反对使用这种方法。因此,避免使用document.write()
——如果允许的话,更新仍在使用它的任何现有代码。
document.write()
方法将文本字符串写入由 document.open()
打开的文档流。
备注:
因为 document.write()
会向文档流中写入内容,所以在已关闭(已加载)的文档上调用 document.write()
会自动调用 document.open()
,这将清空文档。
语法
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+xml MIME 类型的文档时,就会出现这种情况。更多详细信息,请参阅 W3C XHTML 常见问题解答。
备注:
在延迟或异步脚本中使用 document.write()
将被忽略,并且你会在错误控制台中收到类似于“A call to document.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 Standard # dom-document-write-dev |
浏览器兼容性
BCD tables only load in the browser