DOMContentLoaded

DOM文档通常加载的步骤:
1.解析HTML结构。
2.加载外部脚本和样式表文件。
3.解析并执行脚本代码。
4.DOM树构建完成。//DOMContentLoaded
5.加载图片等外部资源。
6.页面加载完毕。//load
js代码执行的前提是它所需要的DOM必须渲染完毕,要不就会报错;使用window.onload时就是在页面完全加载完毕(包括图片等资源)后就执行,由于图片加载比较慢,致使脚本执行延后,拉低用户体验;而js脚本的执行不依赖图片等资源的加载,就是说在DOM树构建完成就可以执行;
此时给document绑定一个事件就可以了,如下:

document.addEventListener('DOMContentLoaded',function(){
    //需要执行的代码;
  },false)

而IE低版本浏览器又没有这个事件,而所有浏览器均支持的onreadystatechange 事件能辨识readyState 属性的改变,在readyState 属性为complete时,DOM树构建完毕,这样就可以封装一个兼容低版本的框架

function DOMReady(fn){
    if(document.addEventListener){   //高级浏览器支持
        document.addEventListener('DOMContentLoaded',function(){
            fn && fn();
        },false)
    }else{                    //低版本浏览器使用
        document.onreadystatechange = function(){
            if(document.readyState == 'complete'){
                fn && fn();
            }
        };
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容