2014-03-18 244 views
0

如果我的瀏覽器對當前有網關超時aka 504的腳本src進行GET,爲什麼瀏覽器掛起並停止呈現,直到60秒後實際發送響應爲止?除了崩潰瀏覽器,這不是一個生產JavaScript應用程序可能發生的最糟糕的事情嗎?作爲應用程序開發人員,您可以做些什麼來防止此問題阻止其他渲染和腳本執行?網關超時和瀏覽器渲染

回答

1

如果腳本內嵌(例如未動態加載)並且未標記爲deferasync,則腳本必須按順序同步處理,並且瀏覽器如果沒有它,將無法繼續。內聯<script>標籤(沒有任何特殊屬性)按照遇到的順序處理,瀏覽器必須按照這種方式處理它們。

如果您希望您的網頁渲染,而不必等待腳本加載,那麼你就可以動態加載它,或者你可以將其標記async</body>標籤和頁面渲染不會等待前右放<script>標籤它。如果使用deferasync,則必須確保沒有其他腳本依賴於此腳本的加載,否則它們可能會在加載此腳本之前運行。

見這些參考資料以獲得更多信息:

load and execute order of scripts

Script Tag - async & defer

0

如果您在腳本標記內的DOM談論的JavaScript,瀏覽器總是會加載它們同步這就是爲什麼它是重要的將JS的大部分放在頁面底部。如果這成爲一個大問題,我會建議使用異步加載庫,如lab.js http://labjs.com/

如果您正在使用更高級的JS,並且想要使用類似AMD模式的腳本加載和依賴項,您可以使用http://requirejs.org/