为了账号安全,请及时绑定邮箱和手机立即绑定

ready和DOMContentLoaded顺序问题

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

正在回答

3 回答

改成这样来看

<script>

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

        show('load事件回调')

    }, false);

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

        show('DOMContentLoaded回调')

    }, false);

</script>

<script src="http://img1.sycdn.imooc.com//down/540812440001e40e00000000.js" type="text/javascript"></script>

<script>

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

    show('脚本解析一')

    //测试加载

    $(function(){

        show('脚本解析二')

    })

    show('脚本解析三')

</script>


1 回复 有任何疑惑可以回复我~
(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事件绑定你想要的函数

0 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

ready和DOMContentLoaded顺序问题

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信