script标签中的defer和async有什么区别?什么情况用defer好,什么情况用async好?

<script async src="myAsyncScript.js" onload="myInit()"></script>
<script defer src="myDeferScript.js" onload="myInit()"></script>
onload事件加到script标签中是什么意思呢?

第1个回答  2014-09-16
defer使得browsers延迟脚本的执行,直到文档的载入和解析完成,并可以操作(在onload事件触发前)。

async使得browsers可以尽快地执行脚本,而不用在下载脚本时阻塞文档解析(异步)。在不支持async的browsers中,通过动态创建<script>元素并把它插入文档中,来实现脚本的异步载入和执行。

若两个属性同在,会忽略defer而遵从async本回答被提问者和网友采纳