在top3浏览器中早期追加儿童地狱

时间:2010-08-01 15:45:54

标签: javascript appendchild lazy-loading

我正在尝试延迟加载javascripts,但我无法让它可靠地工作。我的页面加载速度非常快,我希望保持这种方式,所以我不打算使用超时来延迟加载。除document.readyState之外,我如何确保DOM真正可以修改?

方法I:

  
      
  1. 民意调查readyState

  2.   
  3. createElement脚本

  4.   
  5. src = url

  6.   
  7. 追加元素

  8.   

结果:

  

IE8:总是中止

     

FF3:第一次加载,每次都中止   其他

     

Chrome:第一次加载,每次都中止   其他

方法II:(头标记中包含lazyload

  
      
  1. 使用lazyload加载
  2.   

结果:

  

IE8:总是中止

     

FF3:有效

     

Chrome:第一次加载,每次都中止   其他

2 个答案:

答案 0 :(得分:2)

如果您将<script>标记放在</body>标记的上方,则可以使用DOM执行大多数操作而不会引发任何错误,即通常在<script>标记之上的任何内容修改。

但是,如果您正在寻找更强大的解决方案,那么您可以通过查看主要库如何检测DOM是否已就绪来获得一些进展,这里有一个用于启动器(jQuery):http://github.com/jquery/jquery/blob/master/src/core.js#L393

答案 1 :(得分:1)

如果没有合适的框架来帮助您跨越差异,Javascript几乎无法使用跨浏览器。今天最流行的可能是jquery,其中,根据this tutorial,您可以使用$(document).ready()。在dojo,也非常受欢迎,您可以使用addOnLoad。等等......如果你没有使用任何框架,你就会为自己的生活太过艰难:帮自己一个忙,选一个你喜欢的JS框架! - )