【问题标题】:Why not document.write? [duplicate]为什么不 document.write? [复制]
【发布时间】:2013-09-18 07:27:57
【问题描述】:

为什么在 Javascript 中使用 document.write 通常不被认为是好的做法?我知道这不是最优雅或最好的方法,但它有什么真正的错误吗?一直都好吗?在什么情况下会比inner.HTML

我知道如果在加载后使用它会重写文档。但是,即使我试图重写文档,我是否应该使用innerHTML?如果有,为什么?

我知道有些人问我是否在发帖前查看过相关问题;我做到了。但我没有找到任何令人满意的东西。

【问题讨论】:

  • 我猜你的答案就在这里,它与性能有关。 stackoverflow.com/a/13499903/1517542
  • 因缺乏研究而投反对票。发帖前你有没有看过相关的问题列表?
  • 是的,我确实看过。我觉得我的措辞很奇怪,或者别的什么,因为我没有看到类似的东西。

标签: javascript


【解决方案1】:

如果正确使用,没问题,但用途非常有限。

can't use it in XHTML,但我建议您不要使用 XHTML,除非您有非常非常好的理由。

在初始页面加载完成后调用document.write 时会出现问题。 页面加载过程中很好,但是之后,它会导致一个隐含的document.open,这会从窗口中清除文档并重新开始。

使用document.write 还意味着您不能按需加载脚本或在脚本元素上使用async or defer 属性。

最后,我通常建议将您的 JavaScript 放在文档末尾的单独(单个)JavaScript 文件中(就在结束 </body> 标记之前)。如果您想使用document.write 输出到页面,则必须将该脚本文件包含在更高的位置或直接在 HTML 中使用代码,我不推荐这两种方法。

因此,与其他方法相比,它的用途有限,因此最好精通其他方法。

【讨论】:

【解决方案2】:

是的,在文档加载完成后调用 document.write 将擦除文档。启动您的控制台,然后拨打document.write("test") 电话。该页面将被此新内容覆盖。除了可能一步设置 iframe 内 HTML 之外,永远不要使用 document.write

【讨论】:

    【解决方案3】:

    一个原因可能是document.write 在 XHTML 中不起作用

    另外document.write 仅在页面加载时有效;如果您在页面加载完成后调用它,它将覆盖整个页面,即在您的文档完全呈现并关闭后,使用document.write() 将清除您当前的文档并开始一个新文档,清除所有以前的内容。

    【讨论】:

      【解决方案4】:

      来自the MDN

      写入已加载但未调用的文档 document.open() 将自动执行 document.open 调用。一次 写完了,建议调用document.close(), 告诉浏览器完成页面加载。你写的文字是 解析成文档的结构模型。在上面的例子中, h1 元素成为文档中的一个节点。

      简而言之:必须在初始 load 之后执行的代码(例如在事件处理程序中)不能包含 document.write,否则它们会触发整个文档的替换。

      【讨论】:

        【解决方案5】:

        因为它替换了整个文档。在 99% 的情况下,您只需要替换某些特定元素的内容即可。

        document.write 确实有它的用途 - 例如,当您需要将可执行脚本写入新创建的文档时。

        【讨论】:

          【解决方案6】:

          作为一个很好的做法,有时我们在客户端有信息并使用 javascript 我们将这些信息写入 divspan 元素,因为它们位于 html 布局的正确位置。正如他们所说,document.write 不适用于 xhtml。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2014-10-16
            • 1970-01-01
            • 2018-04-25
            • 1970-01-01
            • 2011-02-03
            • 1970-01-01
            • 1970-01-01
            • 2010-10-08
            相关资源
            最近更新 更多