Interview Preparation
browser
DOM
HTML
<script>
在HTML中的位置放在<body>
最底部,請問:在瀏覽器渲染流程中,會在什麼時機點載入JavaScript 程式碼?為什麼需要這樣做?A1. 瀏覽器解析HTML的順序是由上而下,當遇到一個<script>
需載入外部的JavaScript檔案時,此時瀏覽器會暫停解析下方的HTML內容,直到JS檔案解析完成,這種情況會導致頁面停滯,造成不好的使用者體驗。因此,將<script>
放在</body>
之前可以讓所有靜態HTML內容解析完畢後,再載入JS檔案,避免頁面阻塞,帶來良好的使用者體驗。
<script>
還有什麼處理方式?A2. 將 <script>
放在<body>
最底部也有缺點,特別是當script和stylesheet檔案很大時,需要花很久的時間等待腳本載入,導致使用者一開始看到的畫面缺乏動態功能,同樣也會造成不好的使用者體驗。如果想要「在 DOM 生成的同時,一併載入 JavaScript」,現代的瀏覽器支援在<script>
中加入async或defer的屬性,讓瀏覽器知道可以在生成DOM的同時,載入腳本。
async也就是非同步,這告訴瀏覽器可以在解析HTML內容時,不用等腳本載入。
note: 目前98.09%的瀏覽器都支援async屬性
defer屬性同樣會告訴瀏覽器解析HTML內容,不用等腳本載入。
與async不同處:
note: 目前98.23%的瀏覽器支援defer屬性
同場加映:超級清楚的defer & async圖解,保證馬上學會!