关于看到这个题目可能感觉解决此问题非常的简单,因为有一个常用的事件:
   [ 其他 ] 运行代码    下载代码
<script>
window.onload=function(){
  //code
}
</script>
上面的事件其实是当界面中所有的内容加载完毕再去执行函数中的代码,并非是dom元素结构加载完毕去执行。

当然可以利用jQuery的方式实现此功能:
   [ 其他 ] 运行代码    下载代码
<script>
$(document).ready(function(){ 
  //code
});
</script>
上面的代码确实实现了我们的要求,但是为了实现这个功能就引用庞大的jQuery库,总感觉不是那么核算,如果能够将此功能剥离出来,那么就再好不过了,代码如下:
   [ 其他 ] 运行代码    下载代码
<script>
(function(){
  var isReady=false; //判断onDOMReady方法是否已经被执行过
  var readyList= [];//把需要执行的方法先暂存在这个数组里
  var timer;//定时器句柄
  
  ready=function(fn){
    if(isReady )
     fn.call( document);
    else
     readyList.push( function() { return fn.call(this);});
    return this;
  }
  var onDOMReady=function(){
    for(var i=0;i< readyList.length;i++){
      readyList[i].apply(document);
    }
    readyList = null;
  }
  var bindReady=function(evt){
    if(isReady) return;
      isReady=true;
    onDOMReady.call(window);
    if(document.removeEventListener){
      document.removeEventListener("DOMContentLoaded", bindReady, false);
    }
    else if(document.attachEvent){
      document.detachEvent("onreadystatechange",bindReady);
      if(window == window.top){
        clearInterval(timer);
        timer = null;
      }
    }
  };
  if(document.addEventListener){
    document.addEventListener("DOMContentLoaded", bindReady, false);
  }
  else if(document.attachEvent){
    document.attachEvent("onreadystatechange", function(){
      if((/loaded|complete/).test(document.readyState))
        bindReady();
      });
      if(window == window.top){
        timer = setInterval(function(){
          try{
             //在IE下用能否执行doScroll判断 dom是否加载完毕
            isReady||document.documentElement.doScroll('left');
          }
          catch(e){
            return;
          }
          bindReady();
        },5);
      }
   }
})();
</script>
上面的代码实现了我们的要求,能够让我们只加载dom结构完毕之后就去执行相关代码。

使用方式:
   [ 其他 ] 运行代码    下载代码
<script>
ready(function(){
 //code
});
</script>

代码描述:js实现 dom元素结构加载。js实现dom元素结构加载代码下载



118 157



用户评论
大牛,别默默的看了,快登录帮我点评一下吧!:)      登录 | 注册



×
×
51前端

注册

×
绑定手机

请绑定手机号,在继续操作

×
单次下载支付

应付金额:279

支付完成后,回到下载页面,在进行下载

官方QQ群
意见反馈
qq群

扫描上面二维码加微信群

官方QQ群

jQuery/js讨论群
群号:642649996
Css3+Html5讨论群
群号:322131262

加群请备注:从官网了解到