链接: http://blog.csdn.net/renfufei/article/details/10210949
链接: http://www.tuicool.com/articles/QZBzAz
script可以通过添加async或者defer属性来让脚本不必同步执行。html的版本html4.0中定义了defer;html5.0中定义了async;这将造成由于浏览器版本的不同而对其支持的程度不同;
两者的区别在于执行时的不同:
async属性:
表示当前脚本不必等待其他脚本,也不阻塞文档呈现,属异步执行。但不能保证脚本按照它们在页面中出现的顺序执行。
defer属性:
让脚本在文档完全呈现之后再执行。延迟脚本会按照脚本原来在页面中的顺序执行。
执行时刻:
每一个async属性的脚本都在它下载结束之后立刻执行,同时会在window的load事件之前执行。所以就有可能出现脚本执行顺序被打乱的情况;每一个defer属性的脚本都是在页面解析完毕之后,按照原本的顺序执行,同时会在document的DOMContentLoaded之前执行。
<script async src="myAsyncScript.js" onload="myInit()"></script> <script defer src="myDeferScript.js" onload="myInit()"></script>