码迷,mamicode.com
首页 > 其他好文 > 详细

dom ready

时间:2017-05-08 16:10:14      阅读:239      评论:0      收藏:0      [点我收藏+]

标签:处理   函数   window   现象   return   nbsp   listen   ade   调用   

/**
 * domReady
 * @param  {Function} fn domReady后的回调函数
 * @return {[type]}      [description]
 */

function myReady(fn){
    //对于现代浏览器,对DOMCoutentLoaded事件的处理采用标准的事件绑定方式
    if ( document.addEventListener ) {
        document.addEventListener("DOMContentLoaded", fn, false);
    } else {
        IEContentLoaded(fn);
    }

    //IE模拟DOMContentloaded
    function IEContentLoaded(fn){
        var d=window.document;
        var done=false;  //done【完成了】

        //只执行一次用户的回调函数init()
        var init=function(){
            if(!done){
                done=true;
                fn();
            }
        };
        (function(){
            try{
                //dom树为创建完之前调用doScrool会抛出错误
                d.documentElement.doScrool(‘left‘);
            }catch(e){
                //延迟在试一次~
                /*,在函数有名字,而且名字以后也不会变 的情况下,这样定义没有问题。但问题是这个函数的执行与函数名 factorial 紧紧耦合在了一起。为 了消除这种紧密耦合的现象,可以像下面这样使用 arguments.callee*/
                setTimeout(arguments.callee,50);
                return;
            }
            //没有错误就表示dom树构建完毕,然后立马执行用户回调.
            init();
        })();
        //监听document的加载状态
        d.onreadystatechange=function(){
            //如果用户是在domready之后绑定的函数,就立即执行 complete【完成】
            if(d.readyState==‘complete‘){
                d.onreadystatechange=null;
                init();
            }
        }
    }
}

dom ready

标签:处理   函数   window   现象   return   nbsp   listen   ade   调用   

原文地址:http://www.cnblogs.com/liu-zhao/p/6824868.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!