將組合,縮小,gzip和緩存放在一邊。將腳本標記爲異步仍然保留腳本執行順序嗎?腳本異步標記是否保留腳本執行順序?
說我有一個頁面,頂部包含jquery,後面跟着假設存在jquery的底部的其他腳本。
如果我用async屬性標記jquery腳本,我知道瀏覽器會繼續解析我的html。然而,瀏覽器會保證在我的其他腳本執行之前加載jquery,或者可能會發生亂序,導致未定義的$
?
將組合,縮小,gzip和緩存放在一邊。將腳本標記爲異步仍然保留腳本執行順序嗎?腳本異步標記是否保留腳本執行順序?
說我有一個頁面,頂部包含jquery,後面跟着假設存在jquery的底部的其他腳本。
如果我用async屬性標記jquery腳本,我知道瀏覽器會繼續解析我的html。然而,瀏覽器會保證在我的其他腳本執行之前加載jquery,或者可能會發生亂序,導致未定義的$
?
使腳本異步不保證任何同步執行,除了腳本本身。
<script async src="jquery.js"></script>
<script>
$.noop() // will definitely throw an error
</script>
<script async src="jquery.js"></script>
<script src="someOtherNonAsyncScript.js"></script>
<script>
$.noop() // may or may not throw an error
</script>
不會。它會異步執行。
async和defer屬性是布爾屬性,指示 腳本應如何執行。 (...)
http://www.whatwg.org/specs/web-apps/current-work/multipage/scripting-1.html#attr-script-async