2014-10-08 29 views
0

在做了一些有趣的異步閱讀後,我找不到任何有關如果您首先有一個常規腳本標記,然後是一個與異步應該發生的信息。混合html5 <腳本異步>與非異步<script>標籤

我試過一個快速測試,它似乎做了我希望的事情:如果我先放置一個非異步標記,它似乎總是在稍後的異步歸因標記之前加載它。下面是我與測試代碼:

的test.html:

<!doctype html> 
<html> 
    <head><title>test</title></head> 
    <body> 
     <script src="https://code.jquery.com/jquery-2.1.1.min.js"></script> 
     <script src="test.js" async></script> 
    </body> 
</html> 

test.js:

alert(window.jQuery); 

在每一種情況下,它似乎jQuery是加載。也許我在測試中錯過了一些東西。它是否正確?我可以將依賴關係放入非異步標記,然後使用異步依賴項嗎?這樣做特別有利嗎?

有沒有什麼問題?如果你有一些異步然後是非異步會發生什麼? async'd js會先加載嗎?

回答

1

非異步腳本標籤頁的塊處理。瀏覽器可能會向前看並在執行jquery之前加載test.js,但瀏覽器無法處理該腳本,因爲它不知道jquery對頁面做了什麼(document.writeln,更改窗口對象..)。

所以,是的,它會工作。

這樣做會使加載頁面更快一點,因爲兩個腳本之一可以異步加載。它可能不會匹配優化異步加載程序的啓動時間。

2

這裏的問題我可以回答。我很久以前並不十分確定它。

  1. 第一個腳本是同步加載的。這意味着它將一直持續到文件完全加載,然後進入下一行。

  2. 取決於您何時需要加載此文件。如果必須在加載頁面之前加載它,則不應該對該文件使用異步。

  3. 異步會同時加載一個非異步。如果你最後有兩個非asyncs。這兩個非asyncs將加載同步。 (DUH)

  4. 異步會在該行上加載。

通過它我指的是讀者