Javascript 在HTML末尾或“上”初始化JS组件;“满负荷”吗;?

Javascript 在HTML末尾或“上”初始化JS组件;“满负荷”吗;?,javascript,ajax,initialization,Javascript,Ajax,Initialization,有一段时间,我一直在运行JavaScript组件初始化,等待“onload”事件触发并执行main()排序。它看起来更干净,您可以确保DOM的ID状态正常。但在经历了一段时间之后,我发现组件的初始化被加载过程中挂起的任何资源(图像、css、iFrame、flash等)阻塞了 现在,我使用内联执行将初始化调用移动到HTML文档本身的末尾,发现它将初始化推到其他外部资源之前 现在,我想知道这样做而不是等待“加载”是否会带来一些陷阱 你用哪种方法 编辑:谢谢。似乎每个库都有一个专门用于DOMConte

有一段时间,我一直在运行JavaScript组件初始化,等待“onload”事件触发并执行
main()
排序。它看起来更干净,您可以确保DOM的ID状态正常。但在经历了一段时间之后,我发现组件的初始化被加载过程中挂起的任何资源(图像、css、iFrame、flash等)阻塞了

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

现在,我想知道这样做而不是等待“加载”是否会带来一些陷阱

你用哪种方法

编辑:谢谢。似乎每个库都有一个专门用于
DOMContentLoaded
/
readyState
实现差异的函数。我使用prototype,所以我需要它。

Jquery有$(document).ready()

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


我两者都不用。相反,我依赖于(或onContentReplay()/onAvailable()),因为它为我处理初始化的时间


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

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

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

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

但是,
DOMContentLoaded
和分块传输仍然存在一些问题,这些问题还没有被流行的JavaScript框架解决

给你