代码之家  ›  专栏  ›  技术社区  ›  RZachary

document.write()会造成什么损害?[复制品]

  •  9
  • RZachary  · 技术社区  · 6 年前

    这个问题已经有了答案:

    现在发生了什么坏事 document.write() 是否被调用?

    我听过很多关于 document.write 对dom或javascript库的使用产生不利影响。我有一个问题摆在我面前,我怀疑是相关的,但一直未能找到一个简明的总结什么损害的方法。

    4 回复  |  直到 9 年前
        1
  •  13
  •   Andy E    15 年前

    使用 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>
    

    它主要被广告发布服务用于向页面添加广告,一些googleapi也使用它。

        2
  •  7
  •   Nick Craver    15 年前

    页面阻塞 ,这就足够了,或者说是使用不当的原因。

    当你写文件的时候,就像安迪说的,是 同步的 这意味着你必须先等它,然后才能继续阅读本页的其余部分。

    我不希望你的网站因为你的广告服务器关闭而挂断。不幸的是,对于so,右边的广告使用document.write使用另一台服务器的脚本,如果该脚本关闭,将阻止页面加载,直到页面超时。这次延误,是因为 document.write 一个缓慢的(通常是第三方的)广告服务器是 远的 网站加载速度太慢的原因太多了。

    旁白:广告能让你从浏览中赚钱,好吧,你需要谋生。但不要 依赖的 从技术的角度来看,他们的服务器坏了,你的网站是fubar…用非阻塞的方式做广告,除了 文档.write 为了达到这个目的。

        3
  •  2
  •   Octavian Damiean    13 年前

    我只是想加一个 fiddle 来展示安迪E的真实含义。

    基本上段落元素将不再可见,因为 document.write() 过度保护它。

        4
  •  0
  •   Praveen Kumar Purushothaman    9 年前

    这个片段将证明:

    window.onload = function () {
      document.write("Because I will overwrite everything.");
    }
    <p>Hello, I won't render anymore.</p>