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

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


当前回答

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

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

其他回答

它可以阻止你的页面

文档。写只在页面加载时工作;如果在页面加载完成后调用它,它将覆盖整个页面。

这实际上意味着你必须从一个内联脚本块中调用它——这将阻止浏览器处理接下来页面的部分内容。直到写入块完成,脚本和图像才会被下载。

根据Google-Chrome Dev Tools的Lighthouse Audit所做的分析,

对于连接速度较慢的用户,通过document.write()动态注入的外部脚本可能会将页面加载延迟数十秒。

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

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

引用:

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

它使用XML呈现来分割页面(如XHTML页面)。

最好:一些浏览器切换回HTML渲染,一切工作正常。

可能:某些浏览器在XML呈现模式下禁用了document.write()函数。

最糟糕的情况:某些浏览器在使用document.write()函数时会触发一个XML错误。

浏览器违反

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

性能

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

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

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