ready和DOMContentLoaded顺序问题

来源:1-7 jQuery中ready与load事件

蟹狮耗

2016-01-14 11:32

jq的ready事件底层是调用了DOMContentLoaded,那为什么是ready先被触发,DOMContentLoaded后触发,最后顺序是,“脚本解析二”,“DOMContentLoaded回调”

写回答 关注

3回答

  • 冥oo冥
    2016-12-12 16:27:45

    改成这样来看

    <script>

        window.addEventListener("load", function() {

            show('load事件回调')

        }, false);

        document.addEventListener("DOMContentLoaded", function() {

            show('DOMContentLoaded回调')

        }, false);

    </script>

    <script src="http://img.mukewang.com/down/540812440001e40e00000000.js" type="text/javascript"></script>

    <script>

        show('观察脚本加载的顺序')

        show('脚本解析一')

        //测试加载

        $(function(){

            show('脚本解析二')

        })

        show('脚本解析三')

    </script>


  • qq_秋叶_1
    2016-11-22 10:34:50
    (function () {
    	var succsee = function () {
    		ready.fun()
    	};
    	function ready(fun) {
    		if(ready.fun){
    			var ofun = ready.fun;
    			ready.fun = function () {
    				ofun();
    				fun();
    			}
    			console.log(ready.fun)
    		}else{
    			ready.fun = fun;
    		}
    	}
    	document.addEventListener('DOMContentLoaded',succsee,false)
    	window.ready = ready;
    })()

    简单的猜测了一下$.ready事件,在加载JQuery时就给document的DOMContentLoaded事件绑定complete(success)函数,函数complete(success)再执行你想执行的函数,而不是直接给document的DOMContentLoaded事件绑定你想要的函数

  • Charless
    2016-01-14 14:16:37

    先加载的JQuery后调用的document.addEventListener添加DOMContentLoaded。

jQuery源码解析(架构与依赖模块)

由浅入深地剖析jQuery库的设计与实现,揭开框架背后的秘密

84047 学习 · 280 问题

查看课程

相似问题