2

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

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

问题是,它似乎没有按应有的方式工作。在 IE8 和一个好的浏览器中检查这个小提琴。

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

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

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

再一次,我并不是在要求修复,我是在问一个框架在 IE8 上的行为是否正确(我不再关心 IE 6-7),或者这是否正在发生由于我以某种方式滥用 jQuery。

PS:我知道如何手动绑定事件,我正在询问更多关于这是否是预期/可接受/错误/我的错误。

4

1 回答 1

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 中正常工作

于 2012-10-03T19:15:01.553 回答