天天看点

《JavaScript框架设计》——1.5 主流框架引入的机制——domReady

本节书摘来自异步社区《javascript框架设计》一书中的第1章,第1.5节,作者:司徒正美著,更多章节内容可以访问云栖社区“异步社区”公众号查看

domready其实是一种名为“domcontentloaded”事件的别称,不过由于框架的需要,它与真正的domcontentloaded有一点区别。在许多旧的javascript书藉中,它们都会教导我们把javascript逻辑写在window.onload回调中,以防dom树还没有建完就开始对节点进行操作,导致出错。而对于框架来说,越早介入对dom的干涉就越好,如要进行什么特征侦测之类的。domready还可以满足用户提前绑定事件的需求,因为有时页面图片等资源过多,window.onload就迟迟不能触发,这时若还没有绑定事件,用户点哪个按钮都没反应(除了跳转外)。因此主流框架都引入domready机制,并且费了很大劲兼容所有浏览器,具体策略如下。

(1)对于支持domcontentloaded事件的使用domcontentloaded事件。

(2)旧版本ie使用diego perini发现的著名hack!

此外,ie还可以通过script defer hack进行判定。

不过有个问题是,如果我们的种子模块是动态加载的,在它插入dom树时,dom树已经建完呢?这该怎么触发我们的ready回调?jquery给出的方案是,连onload也监听了,但如果连onload也没赶上,就判定document.readystate是否等于complete!这样完美了吧,可惜firefox3.6之前没有这属性!看mass给出的方案。

上一篇: json
下一篇: JSON

继续阅读