关于DOMReady的IE兼容实现,为什么说有了doScroll之后更接近DOMContentLoaded

来源:3-4 domReady的实现

牛金斯基

2015-12-14 22:51

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

在没有doScroll之前勉强用onreadystatechange,有了doScroll之后更接近DOMContentLoaded的实现。
问题:只用onreadystatechange实现有什么问题?
      只用doScroll不行吗?


写回答 关注

4回答

  • 昵称还是已占用
    2015-12-15 11:22:37
    已采纳

    566f865f0001094905000088.jpghttp://img.mukewang.com/566f874a00011f7a09080336.jpg

    可能有这方面原因 个人理解 仅供参考

    昵称还是已占... 回复牛金斯基

    在IE中如果是frame框架 是使用 onreadystatechange,不是fame用 doSroll

    2015-12-15 20:57:26

    共 2 条回复 >

  • zhaoqihao
    2018-03-09 11:50:31

    我觉得init函数只执行一次,两个判断那个先完成,就执行哪一个。执行更保险点

  • 昵称还是已占用
    2015-12-15 21:07:23

    http://img.mukewang.com/5670103500012bbc07170281.jpg

    又看了下视频 ,视频中也说了一下

  • 昵称还是已占用
    2015-12-15 11:38:15

    http://img.mukewang.com/566f8adf0001690409740533.jpg

    添加一段  图片来自javascript高级程序设计

DOM探索之基础详解篇

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

98374 学习 · 238 问题

查看课程

相似问题