“文档准备好”应该在IE上像这样工作吗?

时间:2012-10-03 19:05:56

标签: javascript jquery onload document-ready domcontentloaded

由于各种原因,我正在制作一个小型的javascript框架,包括学习。

因此,我想实现“文档就绪”功能,所以我去检查jQuery如何在IE上伪造DOMContentLoaded< 9。

问题是,它似乎没有按照它应该的方式工作。检查IE8中的this fiddle和一个好的浏览器。

逻辑是:应用css使div开始为红色,然后在“ready”使其变为蓝色,并在加载时使其变为绿色。此外,还有三个带有虚假URL的img标签,因此在就绪和加载之间存在合成延迟。

会发生什么:
如果有的话,div不应该显示为红色超过一秒钟。理想情况下,首先看到的应该是蓝色。然后,当浏览器超时无效图像时,绿色。

IE8会发生什么:
在所有图像“加载”(在此合成示例中,超时)之前,div保持红色,然后变为绿色。

同样,我并不是要求修复,我问的是,如果框架在IE8上表现如此(我不再关心IE 6-7),或者是否这是因为我以某种方式滥用jQuery。

P.S。:我知道如何手动绑定事件,我要求更多关于这是否是预期/可接受/错误/我的错误。

1 个答案:

答案 0 :(得分:5)

我打算按计划工作。

jQuery正在将document.readyState用于不支持DOMContentLoaded的浏览器。当页面的资源加载完成时,document.readyState仅等于complete

https://developer.mozilla.org/en-US/docs/DOM/document.readyState

可能有一个很好的理由说明他们不是在“互动”上做这件事,但我对此并不乐观。

编辑:这是您在document.readyState == interactive

上的事件的更新小提琴

http://jsfiddle.net/PFWmS/7/

它适用于IE7和IE8

修改

jQuery不使用“交互式”的原因是因为它在IE9中过早发生。

http://bugs.jquery.com/ticket/12282#comment:25

我认为可能有更好的处理方式,导致IE7和8正常的准备时间,同时仍在IE9中正常工作