document.write实际上是否已被弃用?

Ste*_*hen 7 javascript

我已经看到一些关于document.write被弃用的喋喋不休,但我不确定这些信息的确切来源.我确实在MDN中查找了它,但没有任何关于它被弃用的说法..所以现在我有点怀疑.不幸的是,谷歌没有太多帮助(也许我只是没有使用正确的搜索条件).

如果确实已弃用,有人可以将我链接到相应的文档,表明它确实已被弃用吗?

Fab*_*tté 10

不,它通常被认为是不好的做法,而且几乎被误用eval.

阅读:为什么document.write被认为是"不良做法"?

引用上述链接问题中的一些要点:

  • document.write (以下称DW)在XHTML中不起作用

  • 页面加载完成后执行的DW将覆盖页面,或者写一个新页面,或者不起作用

  • DW执行遇到的地方:它不能在给定节点处注入

正如@JaredFarrish所说的那样,deprecated主要是一种心态.这是一个很可能永远不会消失的遗物,否则它会破坏许多网站 - 甚至传统的Google Analytics代码也会使用DW.

显然,功能方面它早已被适当的DOM操作方法取代,并再次引用上面的链接问题:DW is effectively writing serialised text which is not the way the DOM works conceptually.


为了平衡,这里列出了DW可能被认为合适的地方:

  • DW本身没有任何问题 - 如果您使用它,它不会破坏您的页面;
  • 它允许轻松地将外部脚本回退到本地副本,例如从CDN加载jQuery失败时:

    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
    <script>window.jQuery || document.write('<script src="js/libs/jquery-1.8.2.min.js">\x3C/script>');</script>
    
    Run Code Online (Sandbox Code Playgroud)
  • 这是在保持代码简短(例如分析)的同时在页面中插入外部代码段的最简单方法之一.请注意,Google Analytics等系统现在支持异步方法 - script通过document.createElementAPI 创建元素,设置其属性并将其附加到DOM - 而不是使用其传统document.write方法.

tl; dr:
DW很容易被滥用,因此对于现实世界的使用,只要可行,就更喜欢适当的DOM操作方法.