自调用函数会执行init方法,为什么还增加d.onreadystatechange呢,以下代码有什么作用,

来源:3-4 domReady的实现

卧珠不知道

2015-11-01 16:39

d.onreadystatechange = function() {

            // 如果用户是在domReady之后绑定的函数,就立马执行

            if (d.readyState == 'complete') {

                d.onreadystatechange = null;

                init();

            }

        }


写回答 关注

3回答

  • gothClaudia
    2015-11-06 23:21:38
    已采纳

    上面有笔误,更正一下。

    d.readyState == 'complete' 这句判断的是页面是否加载完成。立即调用函数里判断的是dom树创建完成之后执行init();,而上面那句指网页加载完之后执行吧。我是这样理解的。

    卧珠不知道

    有道理。 dom树创建完成跟页面加载完成是有先后顺序的吧,dom树创建完成在前。那样的话后面的init()方法执行概率很小。

    2015-11-11 21:06:21

    共 1 条回复 >

  • gothClaudia
    2015-11-06 22:58:30

    d.readyState == 'complete' 这句判断的是页面是否加载完成。回调函数里判断的是dom树创建完成之后就立即执行init();,而上面那句指网页加载完之后执行吧。我是这样理解的。

  • _Doogie
    2015-11-01 22:58:05

    请问下立即调用里执行了init,d.onreadystatechange里也执行了init这样岂不是执行了2遍init?

    gothCl...

    init里加了限制条件 保证只执行一次

    2015-11-06 22:56:37

    共 1 条回复 >

DOM探索之基础详解篇

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

98372 学习 · 238 问题

查看课程

相似问题