Document: write() 方法

警告: 强烈建议不要使用document.write()方法。

正如HTML 规范本身警告的那样

此方法的行为非常特殊。在某些情况下,此方法可能会影响HTML 解析器在运行时的状态,从而导致 DOM 与文档源不对应(例如,如果写入的字符串是字符串“<plaintext>”或“<!--”)。在其他情况下,该调用可能会首先清除当前页面,就像document.open()已被调用一样。在更多情况下,该方法会被简单地忽略,或者抛出异常。用户代理明确允许避免执行通过此方法插入的script元素。更糟糕的是,此方法的确切行为在某些情况下可能取决于网络延迟,这可能导致非常难以调试的故障。由于所有这些原因,强烈建议不要使用此方法。因此,避免使用document.write()——如果可能,请更新任何仍在使用它的现有代码。

document.write()方法将文本字符串写入由document.open()打开的文档流。

注意:因为document.write()写入文档,所以在已关闭(加载)的文档上调用document.write()会自动调用document.open()这将清除文档

语法

js
write(markup)

参数

标记

包含要写入文档的文本的字符串。

返回值

无(undefined)。

示例

html
<p>Some original document content.</p>
<button onclick="newContent()">Replace document content</button>
js
function newContent() {
  document.open();
  document.write("<h1>Out with the old, in with the new!</h1>");
  document.close();
}

注释

您写入的文本将被解析到文档的结构模型中。在上面的示例中,h1元素成为文档中的一个节点。

在没有调用document.open()的情况下写入已加载的文档将自动调用document.open()。写入后,调用document.close()以告诉浏览器完成页面加载。

如果document.write()调用嵌入在内联 HTML <script>标签中,则它不会调用document.open()。例如

html
<script>
  document.write("<h1>Main title</h1>");
</script>

document.write()document.writeln在 XHTML 文档中不起作用(您将在错误控制台中收到“操作不受支持”(NS_ERROR_DOM_NOT_SUPPORTED_ERR)错误)。当使用 .xhtml 文件扩展名打开本地文件或对于使用application/xhtml+xmlMIME 类型提供的任何文档时,就会发生这种情况。更多信息可在W3C XHTML 常见问题解答中找到。

延迟异步脚本中使用document.write()将被忽略,您将在错误控制台中收到类似“从异步加载的外部脚本调用document.write()被忽略”的消息。

仅在 Edge 中,在<iframe>中多次调用document.write()会导致错误“SCRIPT70:权限被拒绝”。

从版本 55 开始,当满足特定条件时,Chrome 将不会执行通过document.write()注入的<script>元素。有关更多信息,请参阅干预document.write()

规范

规范
HTML 标准
# dom-document-write-dev

浏览器兼容性

BCD 表格仅在浏览器中加载

另请参阅