何谓domReady


原文详细介绍: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();
            })();
        };



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值