javascript IE中的DOM ready应用技巧

时间:2021-05-28

如果只需要对DOM进行操作,那么这时就没必要等到页面全部加载了。我们需要更快的方法。
Firefox有DOMContentLoaded事件可以轻松解决,可惜的就是IE没有。
MSDN关于JSCRIPT的一个方法有段不起眼的话,当页面DOM未加载完成时,调用doScroll方法时,会产生异常。那么我们反过来用,如果不异常,那么就是页面DOM加载完毕了!
复制代码 代码如下:
functionIEContentLoaded(w,fn){
vard=w.document,done=false,
//onlyfireonce
init=function(){
if(!done){
done=true;
fn();
}
};
//pollingfornoerrors
(function(){
try{
//throwserrorsuntilafterondocumentready
d.documentElement.doScroll('left');
}catch(e){
setTimeout(arguments.callee,50);
return;
}
//noerrors,fire
init();
})();
//tryingtoalwaysfirebeforeonload
d.onreadystatechange=function(){
if(d.readyState=='complete'){
d.onreadystatechange=null;
init();
}
};
}

这个函数是DiegoPerini在07年就发布了这个方法,
而且获得了广泛认同,以至于现在许多开源框架都是借鉴这种方法,譬如JQuery中的ready。

如果以后需要用到IE的DomReady,就是他了。

用法:
IEContentLoaded(document.getElementById("test"),test);

functiontest(){}

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章