蟹狮耗
2016-01-14 11:32
jq的ready事件底层是调用了DOMContentLoaded,那为什么是ready先被触发,DOMContentLoaded后触发,最后顺序是,“脚本解析二”,“DOMContentLoaded回调”
改成这样来看
<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>
(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事件绑定你想要的函数
先加载的JQuery后调用的document.addEventListener添加DOMContentLoaded。
jQuery源码解析(架构与依赖模块)
84047 学习 · 280 问题
相似问题