在HTML结尾或“onload”上初始化JS组件?

时间:2009-04-03 16:36:59

标签: javascript ajax initialization

有一段时间我一直在运行JavaScript组件初始化,等待“onload”事件触发并执行main()个排序。它看起来更干净,你可以确定你的DOM的ID状态是有序的。但经过一段时间的努力,我发现组件的初始化被加载期间挂起的任何资源(图像,css,iframe,flash等)所扼杀。

现在我已经使用内联<script />执行将初始化调用移动到HTML文档本身的末尾,并发现它在其他外部资源之前推送初始化。

现在我想知道是否存在一些陷阱,而不是等待“onload”。

您使用的是哪种方法?

编辑:谢谢。似乎每个库都有DOMContentLoaded / readyState实现差异的专用函数。我使用原型,所以我需要this

5 个答案:

答案 0 :(得分:4)

对我来说,我们使用jquery,它的文档就绪状态确保DOM已加载,但不等待你所说的资源。你当然可以在没有javascript框架的情况下,它确实需要一个你可以创建的函数,例如:document ready现在,大多数情况下将脚本放在页面的末尾,确保页面的其余部分在那里,但确保DOM准备就绪并不是一件坏事。

答案 1 :(得分:2)

Jquery有$(document).ready()

运行大多数脚本的理想点是文档准备就绪,而不一定是“加载”。

See here

答案 2 :(得分:1)

我不使用。相反,我依赖于YUI's onDomReady()(或onContentReady()/ onAvailable()),因为它处理我的初始化时间。

(其他JS库只有在页面完全加载后才执行类似的方法,因为这是一个常见的JS问题。)

答案 3 :(得分:1)

这不符合任何(X)HTML规范,我会被告知不要这样做。它会使您的网站进入浏览器的怪癖模式。

答案 4 :(得分:1)

解决问题的正确方法是使用DOMContentLoaded事件,这在所有浏览器中都不受支持。存在黑客(例如,轮询doScroll()或使用onreadystatechange),因此库可以跨浏览器提供此功能。

但是DOMContentLoaded和chunked transfer仍然存在问题,而流行的JavaScript框架尚未解决这些问题。

这是my take on the issue