此刻document.write()
有什么不好的事情被调用?
我听说过一些关于document.write
对 DOM 或 Javascript 库的使用产生不利影响的消息。我有一个问题摆在我面前,我怀疑它是相关的,但无法找到该方法造成的损害的简明摘要。
此刻document.write()
有什么不好的事情被调用?
我听说过一些关于document.write
对 DOM 或 Javascript 库的使用产生不利影响的消息。我有一个问题摆在我面前,我怀疑它是相关的,但无法找到该方法造成的损害的简明摘要。
如果在文档解析完成后调用它,document.write()
将破坏网页 -破坏并覆盖整个 DOM。这被认为document.write()
是对许多旧脚本的不良使用,并且是/曾经是批评许多旧脚本的原因。
window.onload = function ()
{
document.write("Oops!");
}
不过,一般来说,在解析时以同步方式动态地向页面添加内容是可以接受的并且相当广泛使用:
<div>
<script type="text/javascript">
document.write("Well I'll be, your browser supports JavaScript!");
</script>
</div>
它主要由广告发布服务用于将广告添加到页面,一些 Google API 也使用它。
页面阻塞,这就足够了,或者是使用不当的原因。
正如安迪所说,当您执行 document.write 时,它是同步的,这意味着您必须等待它才能继续执行页面的其余部分。
我不希望您的网站因为您的广告服务器宕机而挂断。不幸的是,SO 就是这种情况,正确使用 document.write 的 AD 使用来自另一台服务器的脚本,如果关闭,则会阻止页面加载,直到超时。这种延迟的原因的,document.write
和慢(通常第三方)广告服务器是远远往往一个网站加载缓慢的原因。
旁白:广告让你从观看中赚钱,好吧,你需要谋生。但是不要从技术角度依赖他们,因为他们的服务器已关闭,您的网站是 FUBAR ......以非阻塞方式做广告,除了document.write
实现这一点还有很多方法。
我只是想添加一个小提琴来展示安迪 E 的意思的现场示例。
基本上段落元素将不再可见,因为document.write()
它被覆盖了。
这个片段将证明这一点:
window.onload = function () {
document.write("Because I will overwrite everything.");
}
<p>Hello, I won't render anymore.</p>