在ie下还是会刷新页面呀,大家也帮我测试一下,帮我看一下哪有问题

来源:3-4 domReady的实现

qq_东东_3

2015-11-24 16:00

/**
* Created by Administrator on 2015/11/24.
*/
var myReady = function(fn){
   //对于现代浏览器,对DOMContentLoaded事件的处理是采用标准的事件绑定方式
   if(document.addEventListener){//通过能力检测区分
       document.addEventListener("DOMContentLoaded", fn(), false);
   }else{
       IEContentLoaded(fn);
   }
   //IE下模拟定义DOMContentLoaded
   function IEContentLoaded(fn){
       var d = window.document; //将dom缓存在一个变量里
       var done = false;
       //只执行一次的回调函数 init()
       var init = function(){
           if(!done){
               dan = true;
               fn();
           }
       };
       (function(){//立即调用表达式
           try{
               //DOM树还未创建完之前会抛出错误
               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();
           }
       };

   }
};

写回答 关注

2回答

  • 慕男婶
    2015-11-24 16:09:41
    已采纳

    1、我并没有看到你在哪儿定义了一个变量叫做,蛋

         dan

         var init = function(){
               if(!done){
                   dan = true; // 这个蛋是从哪儿来的 ???
                   fn();
               }
           };


    2、 document.addEventListener("DOMContentLoaded", fn(), false);

    应该写成

        document.addEventListener("DOMContentLoaded", fn, false);

    qq_东东_...

    非常感谢!

    2015-11-24 17:03:21

    共 1 条回复 >

  • qq_东东_3
    2015-11-24 16:58:09

    找到问题了,谢谢

DOM探索之基础详解篇

要知道前端大牛都是从精通DOM开始的,全面讲解DOM的基础知识

98372 学习 · 238 问题

查看课程

相似问题