我正在尝试延迟加载javascripts,但我无法让它可靠地工作。我的页面加载速度非常快,我希望保持这种方式,所以我不打算使用超时来延迟加载。除document.readyState
之外,我如何确保DOM真正可以修改?
方法I:
民意调查readyState
createElement脚本
src = url
- 醇>
追加元素
结果:
IE8:总是中止
FF3:第一次加载,每次都中止 其他
Chrome:第一次加载,每次都中止 其他
方法II:(头标记中包含lazyload)
- 使用lazyload加载
醇>
结果:
IE8:总是中止
FF3:有效
Chrome:第一次加载,每次都中止 其他
答案 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框架! - )