Document: write() 方法
警告: 强烈建议不要使用document.write()
方法。
此方法的行为非常特殊。在某些情况下,此方法可能会影响HTML 解析器在运行时的状态,从而导致 DOM 与文档源不对应(例如,如果写入的字符串是字符串“
<plaintext>
”或“<!--
”)。在其他情况下,该调用可能会首先清除当前页面,就像document.open()
已被调用一样。在更多情况下,该方法会被简单地忽略,或者抛出异常。用户代理明确允许避免执行通过此方法插入的script
元素。更糟糕的是,此方法的确切行为在某些情况下可能取决于网络延迟,这可能导致非常难以调试的故障。由于所有这些原因,强烈建议不要使用此方法。因此,避免使用document.write()
——如果可能,请更新任何仍在使用它的现有代码。
document.write()
方法将文本字符串写入由document.open()
打开的文档流。
注意:因为document.write()
写入文档流,所以在已关闭(加载)的文档上调用document.write()
会自动调用document.open()
,这将清除文档。
语法
write(markup)
参数
标记
-
包含要写入文档的文本的字符串。
返回值
无(undefined
)。
示例
<p>Some original document content.</p>
<button onclick="newContent()">Replace document content</button>
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()
。例如
<script>
document.write("<h1>Main title</h1>");
</script>
document.write()
和document.writeln
在 XHTML 文档中不起作用(您将在错误控制台中收到“操作不受支持”(NS_ERROR_DOM_NOT_SUPPORTED_ERR
)错误)。当使用 .xhtml 文件扩展名打开本地文件或对于使用application/xhtml+xml
MIME 类型提供的任何文档时,就会发生这种情况。更多信息可在W3C XHTML 常见问题解答中找到。
在延迟或异步脚本中使用document.write()
将被忽略,您将在错误控制台中收到类似“从异步加载的外部脚本调用document.write()
被忽略”的消息。
仅在 Edge 中,在<iframe>
中多次调用document.write()
会导致错误“SCRIPT70:权限被拒绝”。
从版本 55 开始,当满足特定条件时,Chrome 将不会执行通过document.write()
注入的<script>
元素。有关更多信息,请参阅干预document.write()
。
规范
规范 |
---|
HTML 标准 # dom-document-write-dev |
浏览器兼容性
BCD 表格仅在浏览器中加载