1.defer异步加载
<script type="text/javascript" defer = "defer">
只有IE能用,而且可以在里面写js
页面解析完毕时才被执行。
页面解析完毕 :标签扫描完,dom树构建完毕(一定发生在页面加载完毕之前)
2.async异步加载(asychronous 异步 )
<script type="text/javascript" async= "async">
W3C标准方法,只能加载外部脚本,不能把js写在script标签里
加载完就执行
3.整合一个函数
function loadScript(url,callback){
var script = document.createElement('script');
script.type = "text/javascript";
script.src = url;
if(script.readyState){
script.onreadystatechange = function(){
if(script.readyState == "complete" || script.readyState == "loaded"){
callback();
}
}
}else{
script.onload = function(){
callback();
}
}
script.src = url;
document.head.appendChild(script);
}
// loadScript('demo.js',function(){
// test();
// });
最后看一下js的加载时间线(图片来源:渡一教育)
顺便说一下
docunment.onreadystatechange = function(){
} 是在文档解析完成时进行操作
window.onload和jQuery中
$(document).ready(function(){})
的区别,前者是页面整个加载完毕,后者是dom解析完就执行
————————————————————————————
如果要把script写在上面,window.onload是最低效的写法
是页面解析完加载完没事干了才执行
而document.addEventListener('DOMContentLoaded',function(){})
是DOM元素解析完就执行