我懂文件。写作被认为是坏习惯;我希望整理一份理由清单,提交给第三方供应商,告诉他们为什么不应该使用文档。编写分析代码的实现。

请附上申领文件的理由。下面是一个坏习惯。


当前回答

Pro:

这是从外部(到您的主机/域)脚本嵌入内联内容的最简单方法。 你可以覆盖一个frame/iframe中的全部内容。在更现代的Ajax技术广泛可用之前(1998-2002),我经常在菜单/导航部分使用这种技术。

Con:

它序列化渲染引擎,直到加载外部脚本,这可能比内部脚本花费更长的时间。 它通常以这样一种方式使用,即将脚本放在内容中,这被认为是糟糕的形式。

其他回答

Chrome浏览器可能阻止文档。编写在某些情况下插入脚本的代码。当这种情况发生时,它将在控制台中显示以下警告:

一个解析器阻塞,跨源脚本,…,通过 document . write。这可能会被浏览器阻止,如果设备 网络连通性差。

引用:

developers.google.com上的这篇文章将详细介绍。 https://www.chromestatus.com/feature/5718547946799104

浏览器违反

.write被认为是浏览器违规,因为它会停止解析器呈现页面。解析器接收到文档正在被修改的消息;因此,它会被阻塞,直到JS完成它的进程。只有在这个时候,解析器才会恢复。

性能

使用这种方法的最大后果是降低性能。浏览器需要更长的时间来加载页面内容。加载时间的不良反应取决于写入文档的内容。如果您向DOM添加一个<p>标记,而不是将一个包含50个左右引用的数组传递给JavaScript库,您不会看到太大的区别(我在工作代码中看到过这种情况,导致11秒的延迟——当然,这也取决于您的硬件)。

总而言之,如果可以的话,最好避免使用这种方法。

有关更多信息,请参阅对document.write()进行干预

我能想到的是:

文档。写需要用在页面加载或正文加载上。因此,如果您想在任何其他时间使用脚本来更新您的页面内容文档。写作几乎毫无用处。 技术文档。write只更新HTML页面,不更新XHTML/XML。IE似乎对这个事实很宽容,但其他浏览器不会。

http://www.w3.org/MarkUp/2004/xhtml-faq#docwrite

一些比较严重的问题:

document.write (henceforth DW) does not work in XHTML DW does not directly modify the DOM, preventing further manipulation (trying to find evidence of this, but it's at best situational) DW executed after the page has finished loading will overwrite the page, or write a new page, or not work DW executes where encountered: it cannot inject at a given node point DW is effectively writing serialised text which is not the way the DOM works conceptually, and is an easy way to create bugs (.innerHTML has the same problem)

最好使用安全且DOM友好的DOM操作方法

我认为最大的问题是任何通过文档编写的元素。写被添加到页面元素的末尾。这很少是现代页面布局和AJAX所期望的效果。(您必须记住DOM中的元素是临时的,脚本何时运行可能会影响其行为)。

最好在页面上设置一个占位符元素,然后操作它的innerHTML。