【问题标题】:What are all the evils of document.write [closed]document.write的所有弊端是什么[关闭]
【发布时间】:2011-11-13 07:39:21
【问题描述】:

我知道使用document.write 有很多问题,我绝对避免使用它。但是,我遇到了使用它的第 3 方小部件的问题。我不知道如何用语言表达(也可能不知道所有原因)为什么应该避免这一小片纯粹的邪恶。

我已经重写了第 3 方提供的代码来内联他们的小部件,这样它就不会使用document.write。但是,该代码会加载另一个使用它的脚本。我延迟了脚本的加载,这导致它的document.write 调用在onload 之后发生,覆盖了我的整个页面。

所以问题是,使用document.write 的所有问题是什么,以便我可以提供一个完整的列表,说明为什么第 3 方应该修复他们的代码?

提前谢谢你!

【问题讨论】:

  • 实际上只是在加载文档后会覆盖页面的内容。哦,它在 XHTML 文档中不存在。国际海事组织。
  • 在这里,我以为您有“文档的弊端是什么”,在结束之前我很高兴能进行一次很好的讨论;)

标签: javascript document.write


【解决方案1】:

引用自following post:

  • 因为内联脚本强制用户的浏览器等待代码 之前完成(即使我们必须等待外部 url 加载) 渲染页面的其余部分。

  • 因为我们无法进一步处理(修改/复制等)输出 在将其嵌入实际网页之前。

  • 他们还膨胀了 xhtml 代码

【讨论】:

    【解决方案2】:

    我对@9​​87654321@ 的唯一体验是它会使页面的其余部分空白,因此我会避免使用它。

    此外,使用 jQuery 等库以及原生 JavaScript 选择器函数,可以更改元素的内容,而不必确保将 document.write 放置在您想要内容的任何位置。这意味着您可以将 JavaScript 与您的标记分开,从而使所有内容都更加简洁和易于管理。

    【讨论】:

      【解决方案3】:

      我想在页面完成加载后添加有关使用 document.write 的注释来添加 Darin 的答案。页面完成加载后,文档流将关闭。这是由浏览器完成的。如果您在发生这种情况后尝试使用 document.write,文档流将再次打开并接受输入,但不会自动关闭。这使浏览器处于它仍然认为它正在加载内容的状态。如果您注意到与服务器的“连接”永无止境,这可能是一个原因。其他副作用可能是空白页(不确定这是在 IE 还是 FireFox 中)。

      【讨论】:

        猜你喜欢
        • 2017-06-10
        • 2011-02-27
        • 1970-01-01
        • 1970-01-01
        • 2012-11-29
        • 1970-01-01
        • 2011-07-19
        • 2011-12-30
        • 2018-12-18
        相关资源
        最近更新 更多