如何在IE浏览器里模仿DomContentLoaded

标签: IE Web JavaScript | 发表时间:2013-12-27 22:51 | 作者:iefans
出处:http://www.iefans.net

稍微了解一点框架的事件绑定的都知道 window.onload 事件需要在页面所有内容(包括图片、flash、iframe等)加载完后,才执行,但往往我们更希望在 DOM 一加载完就执行脚本,而各大框架都提供了这样的方法,今天就讨论下其中的原理。

标准浏览器都提供了一个DomContentLoaded事件来实现,我们只需要注册相应的事件就可以了,而在IE浏览器里则需要模仿实现。

IE浏览器里最早的解决方案是绑定document.onreadystatechange事件,判断readyState是否为complete,但是当页面有iframe时就无法及时触发了(等到iframe加载完毕readyState的值才会变为complete)

而之后有了一种利用 doScroll() 方法来模拟 addDOMLoadEvent 事件的方案,且现在主流的 JavaScript 框架(JQuery、YUI,kissy等)基本都采用的这一解决方案。doScroll判断页面是否可以滚动,如果可以滚动,那么就意味着文档加载完毕了。

kissy里面的判断:

doScroll

doScroll

标准浏览器的绑定:

w3c

这里要说明的是在触发了DomContentLoaded这个事件之后就会取消该事件,避免反复触发,之后就去执行绑定在ready方法上的所有函数了

而IE浏览器下的绑定大同小异,换成了onreadystatechange而已

但是仅仅绑定是不够的,下面还要判断是否在有iframe的页面内,在iframe中则通过document的onreadystatechange来实现,否则通过不断测试doScroll是否可用来实现。不过经测试(本人未测试过),即使是在iframe中,doScroll依然有效。

via:魔堕轮回

This article addresses: http://www.iefans.net/ie-mofang-domcontentloaded/

Here is no comments yet by the time your rss reader get this, Do you want to be the first commentor? Hurry up

相关 [ie 浏览器 模仿] 推荐:

如何在IE浏览器里模仿DomContentLoaded

- - IE浏览器中文网站
稍微了解一点框架的事件绑定的都知道 window.onload 事件需要在页面所有内容(包括图片、flash、iframe等)加载完后,才执行,但往往我们更希望在 DOM 一加载完就执行脚本,而各大框架都提供了这样的方法,今天就讨论下其中的原理. 标准浏览器都提供了一个DomContentLoaded事件来实现,我们只需要注册相应的事件就可以了,而在IE浏览器里则需要模仿实现.

IE 浏览器的创新

- - 博客 - 伯乐在线
译者按:IE 曾是 web 创新的先驱,但最近几年因为对 web 标准的支持落后于其他 浏览器以及低版本 IE 的各种 bug 而被人诟病. Zakas 带我们回顾了 IE 在 web 发展过程中扮演的辉煌角色,让我们能以一个更客观的眼光来看待 IE. 看完这篇文章,也许大家都会对 IE 浏览器有一定的改观,这也是我翻译这篇文章的目的.

AngularJS的IE浏览器兼容性

- - JavaScript - Web前端 - ITeye博客
        如果你要让你的AngularJS应用兼容IE8和IE8以下的版本的话,你需要做一些特殊处理. 要让你的AngularJS应用在IE中正常运行你必须:.     a.确保JSON字符串能被正常解析(IE7需要),你可以使用JSON2或者JSON3来实现.     b.不能使用自定义的元素标签,如(你只能使用属性的形式,如
).

“IE浏览器用户智商低”被证实是假消息

- 韡 - 互联网的那点事
最近,“IE浏览器用户智商低”的新闻被国内外各大媒体广泛报道. 然而,BBC经过调查,发现这是一条精心制造的假新闻. 这一结论最初来自一家名为AptiQuant的加拿大心理测试机构7月28日发布的新闻稿(附有非常专业的调查报告),称有10万人参与的网上调查结果表明,IE用户的智商低于其他浏览器用户.

假新闻:IE浏览器用户智商低

- 飞 - BBC 中文网| 中文网主页
假消息称,对比各类浏览器用户的智商,IE最低,引发媒体盲目追捧该消息. 周三(8月3日),一条特抢眼的新闻“Internet Explorer浏览器用户的智商更低”广为流传,谁也没料到这是一条假新闻. 包括BBC,CNN, 《每日邮报》、《每日电讯报》和《福布斯》杂志在内的各大主流媒体都被报道了这条假新闻.

IE 浏览器说 Google 帐户登录界面不安全

- 瑠音北樟 - 谷奥——探寻谷歌的奥秘
感谢读者 crazyhmx 的爆料. 今天,许多人都发现了用内置了防钓鱼功能的IE 8、9浏览器无法登录Google帐户了,当你试图登录跳转到accounts.google.com的时候,IE浏览器说这个网站不安全,建议你不要继续(如上图). 尤其对于IE9用户来说,想登录Google帐户是完全没可能的了,除非换用其它浏览器.

Chrome超越IE成全球第一大浏览器(图)

- - 业界
全球范围内,Chrome的份额已经超越了IE. 中国市场上IE仍然遥遥领先. 北京时间5月21日下午消息,美国市场研究公司Statcounter的数据显示,截至今年5月,Chrome已超越IE,成为全球第一大浏览器. Firefox和Safari位居第三和第四位. 数据显示,今年5月Chrome浏览器的全球份额约为33%,超越IE的32%全球居首.

关于IE、火狐等浏览器兼容问题的总结

- - 博客园_首页
   今天整理系统,发现系统很多页面,只有在IE6下显示正常,其它的都不正常,很是奇怪. 所以上网找了一些关于浏览器兼容的问题和解决办法,在此我觉得大牛们总结的比较精彩,分享给网友们. 以下两种方法几乎能解决现今所有兼容.. 1, !important (不是很推荐,用下面的一种感觉最安全). 随着IE7对!important的支持, !important 方法现在只针对IE6的兼容.(注意写法.记得该声明位置需要提前.).

IE 浏览器安全级别详情及区别

- - 大魔 I'm Png
排查问题时,定位到可能和当前浏览器的安全级别设置有关,顺便整理了下Windows 7下IE9安全级别的详情内容,及各安全级别下的默认设置差异. Windows 7下IE9安全级别设置项如下表示. (留空代表同前一列的值,无变化). .NET Framework 相关组件. 运行未用 Authenticode 签名的组件.