js加载顺序疑惑:window.load、document.body.load和$(function(){})

本文通过实验分析了不同浏览器环境下window.onload、document.body.onload和$(function())的执行顺序,并提供了测试代码及结果,帮助开发者理解页面加载过程中脚本执行的时机。

        今天在看脚本加载的顺序,想探讨一下window.load和document.body.load和$(function(){})的执行顺序。我也没太研究明白,希望大神帮我一下,指明我前进的方向。我先谢了,我这想探讨的是为什么会出现这种情况,而不是说用哪种方式去实现加载,或者说规避这种情况。

 

        浏览器使用Firefox32.0.3,Chrome39.0.2160.2,内核是31.0.1650.63版本的是360浏览器。我在stackoverflow上也查了一下,没有获得比较满意的答案。
        jquery的$(function(){})首先加载是没有任何疑问的,$(function(){})的执行是在DOM准备好之后执行。
        window.onload是在页面加载完成之后,包括加载完各种js、css、image资源才执行。
        document.body.load或者直接在body标签上加onload()方法,是在页面加载到body的时候执行的。
        也有可能我理解不正确,请批评指正。
         在这三款浏览器中发现有些不同的现象。
         代码1:
        
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Test2</title>
<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script>
window.onload=function(){
console.log("window onload");
}
function init(){
console.log("body init");
}
$(function(){
console.log("dom ready="+$('#span').html());
})
</script>
</head>
<body onload="init()">
<span id="span">I love Internet!</span>
</body>

</html>
    测试结果:
Firefox
Chrome31.0.1650.63
Chrome39.0.2160.2
dom ready=I love Internet!
dom ready=I love Internet!
dom ready=I love Internet!
body init
body init
window onload
 
 
body init

代码2:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Test21</title>
<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script>

function init(){
console.log("body init");
}
$(function(){
console.log("dom ready="+$('#span').html());
})
</script>
</head>
<body onload="init()">
<span id="span">I love Internet!</span>
<script>window.onload=function(){
console.log("window onload");
}</script>
</body>

</html>
 测试结果:
Firefox
Chrome31.0.1650.63Chrome39.0.2160.2
dom ready=I love Internet!
dom ready=I love Internet!
 dom ready=I love Internet!
window onload
window onload
window onload

代码3:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Test3</title>
<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script>
/*window.onload=function(){
console.log("window onload");
}*/
$(window).load(function(){
console.log("window onload!");
})
function init(){
console.log("body init");
}
$(function(){
console.log("dom ready="+$('#span').html());
})
</script>
</head>
<body onload="init()">
<span id="span">I love Internet!</span>
</body>

</html>
 测试结果:
Firefox
Chrome31.0.1650.63
Chrome39.0.2160.2
dom ready=I love Internet!
dom ready=I love Internet!
 dom ready=I love Internet!
window onload!
window onload!
window onload!
body init
body init
body init

代码4:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Test4</title>
<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script>
/*window.onload=function(){
console.log("window onload");
}*/
function init(){
//setTimeout(function(){
console.log("body init");
// },1000);
}
$(function(){
console.log("dom ready="+$('#span').html());
$(window).load(function(){
console.log("window onload!");
})
/*window.onload=function(){
console.log("window onload");
}*/
})
</script>
</head>
<body onload="init()">
<span id="span">I love Internet!</span>
</body>

</html>
 测试结果:
Firefox
Chrome31.0.1650.63
Chrome39.0.2160.2
dom ready=I love Internet!
dom ready=I love Internet!
 dom ready=I love Internet!
body init
body init
body init
window onload!
window onload!
window onload!

代码5:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Test5</title>
<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script>
/*window.onload=function(){
console.log("window onload");
}*/
function init(){
//setTimeout(function(){
console.log("body init");
// },1000);
}
$(function(){
console.log("dom ready="+$('#span').html());
/*$(window).load(function(){
console.log("window onload!");
})*/
window.onload=function(){
console.log("window onload");
}
})
</script>
</head>
<body onload="init()">
<span id="span">I love Internet!</span>
</body>

</html>
 测试结果:
Firefox
Chrome31.0.1650.63Chrome39.0.2160.2
dom ready=I love Internet!
dom ready=I love Internet!
 dom ready=I love Internet!
window onload
window onload
window onload

代码6:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Test5</title>
<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script>
/*window.onload=function(){
console.log("window onload");
}*/
function init(){
//setTimeout(function(){
console.log("body init");
// },1000);
}
$(function(){
console.log("dom ready="+$('#span').html());
$(window).load(function(){
console.log("jquery window onload!");
})
window.onload=function(){
console.log("window onload");
}
})
</script>
</head>
<body onload="init()">
<span id="span">I love Internet!</span>
</body>

</html>
 测试结果:
Firefox
Chrome31.0.1650.63Chrome39.0.2160.2
dom ready=I love Internet!
dom ready=I love Internet!
 dom ready=I love Internet!
window onload
jquery window onload!
jquery window onload!
jquery window onload!
window onload
window onload

代码7:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Test7</title>
<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script>
/*window.onload=function(){
console.log("window onload");
}*/
function init(){
//setTimeout(function(){
console.log("body init");
// },1000);
}
$(function(){
console.log("dom ready="+$('#span').html());
window.onload=function(){
console.log("window onload");
}
$(window).load(function(){
console.log("jquery window onload!");
})

})
</script>
</head>
<body onload="init()">
<span id="span">I love Internet!</span>
</body>

</html>
 测试结果:
Firefox
Chrome31.0.1650.63Chrome39.0.2160.2
dom ready=I love Internet!
dom ready=I love Internet!
 dom ready=I love Internet!
window onload
window onload
window onload
jquery window onload!
jquery window onload!
jquery window onload!

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值