老师能否详细说下这段引用

老师能否详细说下这段引用

function myReady(fn){


    //对于现代浏览器,对DOMContentLoaded事件的处理采用标准的事件绑定方式

    if ( document.addEventListener ) {

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

    } else {

        IEContentLoaded(fn);

    }


    //IE模拟DOMContentLoaded

    function IEContentLoaded (fn) {

        var d = window.document;

        var done = false;


        //只执行一次用户的回调函数init()

        var 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();

            }

        }

    }

}


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕慕子 2019-07-30 16:40:52

同学你好, 这个函数是老师提前封装好的一个函数,做了一些兼容性和错误分析处理,主要就是为了兼容IE浏览器, 老师在其中已经做了很详细的功能注释,可以参考一下理解一下。其中有一些性能优化的思想你可能看不懂,不过现在看不懂没关系,后面阶段我们学习jQuery的时候, 会有更简单的方法$(document).ready(function(){//代码})代替这个函数的功能哦

目前阶段, 我们不需要去研究这里面的原理, 简单了解一下即可, 等你的知识达到一定的程度,写过一些代码之后,就会慢慢理解了,然后在回过头来研究会更容易理解哦

如果帮助到了你, 欢迎采纳!

祝学习愉快~~~

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师