有一段时间我一直在运行JavaScript组件初始化,等待“onload”事件触发并执行main()
个排序。它看起来更干净,你可以确定你的DOM的ID状态是有序的。但经过一段时间的努力,我发现组件的初始化被加载期间挂起的任何资源(图像,css,iframe,flash等)所扼杀。
现在我已经使用内联<script />
执行将初始化调用移动到HTML文档本身的末尾,并发现它在其他外部资源之前推送初始化。
现在我想知道是否存在一些陷阱,而不是等待“onload”。
您使用的是哪种方法?
编辑:谢谢。似乎每个库都有DOMContentLoaded
/ readyState
实现差异的专用函数。我使用原型,所以我需要this。
答案 0 :(得分:4)
对我来说,我们使用jquery,它的文档就绪状态确保DOM已加载,但不等待你所说的资源。你当然可以在没有javascript框架的情况下,它确实需要一个你可以创建的函数,例如:document ready现在,大多数情况下将脚本放在页面的末尾,确保页面的其余部分在那里,但确保DOM准备就绪并不是一件坏事。
答案 1 :(得分:2)
答案 2 :(得分:1)
(其他JS库只有在页面完全加载后才执行类似的方法,因为这是一个常见的JS问题。)
答案 3 :(得分:1)
这不符合任何(X)HTML规范,我会被告知不要这样做。它会使您的网站进入浏览器的怪癖模式。
答案 4 :(得分:1)
解决问题的正确方法是使用DOMContentLoaded
事件,这在所有浏览器中都不受支持。存在黑客(例如,轮询doScroll()
或使用onreadystatechange
),因此库可以跨浏览器提供此功能。
但是DOMContentLoaded
和chunked transfer仍然存在问题,而流行的JavaScript框架尚未解决这些问题。