javascript - "document ready"在 IE 上应该这样工作吗?

标签 javascript jquery onload document-ready domcontentloaded

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

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

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

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

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

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

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

P.S.:我知道如何手动绑定(bind)事件,我更多地询问这是否是预期的/可接受的/错误/我的错误。

最佳答案

我将按照预期进行工作。

对于不支持 DOMContentLoaded 的浏览器,jQuery 使用 document.readyStatedocument.readyState 仅在页面资源加载完成后才等于 complete

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

他们不以“互动”方式进行这可能是有充分理由的,但我对此并不乐观。

编辑:这是您更新的关于 document.readyState == Interactive 事件的 fiddle

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

它适用于 IE7 和 IE8

编辑

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

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

我认为可能有一种更好的处理方法,可以使 IE7 和 8 正确就绪,同时在 IE9 中仍能正常工作

关于javascript - "document ready"在 IE 上应该这样工作吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12715136/

相关文章:

javascript - SVG 不在 Firefox 中呈现字体(适用于 IE9 和 Chrome)

jquery - 在多个 div 上组合 jquery .on()

javascript - jQuery 翻转插件开关功能在开关上失败

javascript - DOM 就绪的 iOS UIWebView

javascript - 在该 onload 中使用 onload 定位元素的任何简单方法?

javascript - 如何避免每次运行程序时数字改变单元格大小?

javascript - 我如何获取一个对象的所有属性并将它们插入到它自己的对象数组属性中?

javascript - 根据分辨率将显示属性添加到折叠式 onload

javascript - $ 无法在 Typo3 中包含的外部 js 文件中工作

javascript - 使用 HTML5 上传图像并在用户端降低质量