document.write的所有罪恶是什么?

时间:2011-09-08 20:24:17

标签: javascript document.write

我知道使用document.write时存在很多问题,我完全避免使用它。但是,我遇到了使用它的第三方窗口小部件的问题。我不太清楚如何言语(也可能不知道所有的原因)为什么要避免这一小片纯粹的邪恶。

我已经重写了第三方为内联其小部件而提供的代码,以便它不会使用document.write。但是,该代码会加载另一个使用它的脚本。我推迟加载脚本,导致document.write调用发生在onload之后,覆盖整个页面。

所以问题是,使用document.write的所有问题是什么,以便我可以提供有关第三方应该修复其代码的原因的全面列表?

提前谢谢!

3 个答案:

答案 0 :(得分:4)

来自following post

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

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

  •   
  • 他们也夸大了xhtml代码
  •   

答案 1 :(得分:1)

我对document.write的唯一体验是它会使页面的其余部分空白,因此我会避免使用它。

此外,对于像jQuery这样的库以及本机JavaScript选择器函数,可以更改元素的内容,而不必确保将document.write放置在您想要的内容的任何位置。这意味着您可以将JavaScript与标记分开,使所有内容更清晰,更易于管理。

答案 2 :(得分:1)

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