学习Jquery 源码 有一收获 DOM 加载 重新认识
刚才看Jquery源码时,看见如下,一段不明白,上网一搜,豁然开朗啊
?
?// The DOM ready check for Internet Explorer
??? function doScrollCheck() {
??????? if ( jQuery.isReady ) {
??????????? return;
??????? }
??????? try {
??????????? // If IE is used, use the trick by Diego Perini
??????????? // http://javascript.nwbox.com/IEContentLoaded/
??????????? document.documentElement.doScroll("left");
??????? } catch(e) {
??????????? setTimeout( doScrollCheck, 1 );
??????????? return;
??????? }
??????? // and execute any waiting functions
??????? jQuery.ready();
??? }
?
“document.documentElement.doScroll("left")”是干啥用的,
http://www.cnblogs.com/maklove/ 介绍如下,不写了,copy如下。
?
?
“在大部分前端开发中,需要在DOM树载入时马上执行一些函数,但又不愿意仅为了这一个需求而引入整个jQuery库,于是就把jQuery的ready方法提取出来,单独使用了。当然大家可以使用windows.onload事件, 但onload在浏览器看来,就是页面上的东西(img,iframe等资源)全部都加载完毕后才能发生,如果页面内有大的图片的话,会在页面展现后好久时间后才执行。如果只需要对DOM进行操作,那么这时就没必要等到页面全部加载了。我们需要更快的方法。Firefox有DOMContentLoaded事件可以轻松解决,可惜的就是IE没有。MSDN关于JSCRIPT的一个方法有段不起眼的话,当页面DOM未加载完成时,调用doScroll方法时,会产生异常。那么我们反过来用,如果不异常,那么就是页面DOM加载完毕了!所以 对于Mozilla & Opera 浏览器,在dom树载入后有现成的 DOMContentLoaded 事件对于Safari 浏览器,有document.onreadystatechange事件,当该事件触发时,如果 document.readyState=complete时,可视为dom树已经载入对于ie,当在iframe内时,同样有document.onreadystatechange事件,对于ie在非iframe内时,只有不断地通过能否执行doScroll判断dom是否加载完毕。在本例中每间隔5毫秒尝试去执行 document.documentElement.doScroll('left')另外要注意一点:在ie8下,貌视非iframe窗口也会有document.onreadystatechange事件,另外你也可以在构建自己的JS框架时使用此函数.”
?
貌似说的有道理,暂且认为就是这样,以后实验后,在总结
?