您的位置:首页 > 其它

何谓domReady

2016-05-04 01:13 549 查看
原文详细介绍:http://www.cnblogs.com/rubylouvre/p/4536334.html

关键代码:

function IEContentLoaded (w, fn) {
var d = w.document, done = false,
// 只执行一次用户的回调函数init()
init = function () {
if (!done) {
done = true;
fn();
}
};
(function () {
try {
// DOM树未创建完之前调用doScroll会抛出错误
d.documentElement.doScroll('left');
} catch (e) {
//延迟再试一次~
setTimeout(arguments.callee, 50);
return;
}
// 没有错误就表示DOM树创建完毕,然后立马执行用户回调
init();
})();
//监听document的加载状态
d.onreadystatechange = function() {
// 如果用户是在domReady之后绑定的函数,就立马执行
if (d.readyState == 'complete') {
d.onreadystatechange = null;
init();
}
};
}


在标准浏览器下,匿名函数会一只try-catch下去。

关于doScroll的详细介绍:https://msdn.microsoft.com/en-us/library/ms536414(v=vs.85).aspx

大概意思:IE专用,IE11以下,Simulates a click on a scroll bar component ,模拟一个滚动条组件上的点击。

===============================================================================

同理,HTML转换DOM过程,可以根据document.body来判断,简单测试了下可以通过,但是在html内元素多的时候,可能会出现bug。

function ConLoaded(w,fn){
var d = w.document, done = false,
// 只执行一次用户的回调函数init()
init = function () {
if (!done) {
done = true;
fn();
}
};
(function () {
if( d.body == null ){
setTimeout(arguments.callee, 50);
return false;
};
init();
})();
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: