document.write
为什么在 Javascript中使用通常不被认为是好的做法?我知道这不是最优雅或最好的方法,但它有什么真正的错误吗?一直都好吗?在什么情况下会比inner.HTML
我知道如果在加载后使用它会重写文档。innerHTML
但是,即使我试图重写文档,我也应该使用吗?如果是这样,为什么?
我知道有些人问我是否在发帖前查看过相关问题;我做到了。但是我没有找到任何令人满意的东西。
document.write
为什么在 Javascript中使用通常不被认为是好的做法?我知道这不是最优雅或最好的方法,但它有什么真正的错误吗?一直都好吗?在什么情况下会比inner.HTML
我知道如果在加载后使用它会重写文档。innerHTML
但是,即使我试图重写文档,我也应该使用吗?如果是这样,为什么?
我知道有些人问我是否在发帖前查看过相关问题;我做到了。但是我没有找到任何令人满意的东西。
如果使用得当,它很好,但用途非常有限。
你不能在 XHTML 中使用它,但我建议不要使用 XHTML,除非你有一个非常非常好的理由。
当您document.write
在初始页面加载完成后调用时会出现问题。在页面加载期间很好,但之后,它会导致一个隐含的document.open
,它从窗口中清除文档并重新开始。
使用document.write
还意味着您不能按需加载脚本或在脚本元素上使用async
ordefer
属性。
最后,我通常建议将您的 JavaScript 放在文档末尾的单独(单个)JavaScript 文件中(就在结束</body>
标记之前)。如果要用于document.write
输出到页面,则必须将该脚本文件包含在更高的位置或直接在 HTML 中使用代码,我不推荐这两种方法。
因此,由于与其他方法相比,它的用途如此有限,因此最好精通其他方法。
是的,在文档加载完成后调用 document.write 将擦除文档。启动您的控制台,然后document.write("test")
拨打电话。该页面将被此新内容覆盖。除了可能一步设置 iframe innerHTML 之外,永远不要使用document.write
.
作为一个好的实践,有时我们在客户端有信息,并且使用 javascript 我们将这些信息写入div
和span
元素,因为它们位于 html 布局的正确位置。正如伙计们所说,document.write
不适用于xhtml。
一个原因可能是document.write
在 XHTML 中不起作用
也document.write
仅在页面加载时有效;如果您在页面加载完成后调用它,它将覆盖整个页面,即在您的文档完全呈现并关闭后,使用document.write()
将清除您当前的文档并开始一个新文档,清除所有以前的内容。
来自MDN:
在没有调用 document.open() 的情况下写入已经加载的文档将自动执行 document.open 调用。完成编写后,建议调用 document.close(),告诉浏览器完成页面加载。您编写的文本将被解析为文档的结构模型。在上面的示例中, h1 元素成为文档中的一个节点。
简而言之:必须在初始之后执行的代码load
(例如在事件处理程序中)不能包含 a document.write
,否则它们会触发整个文档的替换。
因为它替换了整个文档。在 99% 的情况下,您只需要替换某些特定元素的内容。
document.write 确实有它的用途 - 例如,当您需要将可执行脚本写入新创建的文档时。