WebKit nightly 版本现在支持此功能。语法如下所示
<script async src="myAsyncScript.js" onload="myInit()"></script>
<script defer src="myDeferScript.js" onload="myInit()"></script>
async
和defer
脚本都立即开始下载,而不会暂停解析器,并且都支持可选的 onload 处理程序,以解决对执行依赖于脚本的初始化的常见需求。async
和defer
之间的区别在于脚本执行的时间。每个async
脚本都在下载完成后第一次有机会执行,并在窗口的load
事件之前执行。这意味着async
脚本可能(也很有可能)不会按其在页面中出现的顺序执行。另一方面,defer
脚本保证按其在页面中出现的顺序执行。该执行在解析完全完成后开始,但在文档的DOMContentLoaded
事件之前。
过去,这可以通过在 JavaScript 中创建新的脚本元素并将其在页面加载后附加到头部来完成。这种方式更简单、更干净。希望其他浏览器制造商也能采用这种方式,并且使用相同的语法。