Web技術基礎

在瀏覽器顯示第一個畫面之前的處理(關鍵轉譯路徑)中,若<head>中有不加屬性的 <script src="app.js">,HTML的解析就會在那裡停住。為這個元素加上defer屬性時的行為,下列何者正確?

  1. A下載一完成就停止HTML的解析並立即執行,多個指令碼的執行順序不保證
  2. B既不下載也不執行,直到使用者操作網頁時才第一次載入
  3. C與HTML的解析平行下載,在解析結束後,依文件中撰寫的順序執行
查看答案與解析

正確答案:C. 與HTML的解析平行下載,在解析結束後,依文件中撰寫的順序執行

瀏覽器解析HTML建立DOM、解析CSS建立CSSOM,合併兩者決定要繪製的內容,計算元素的位置與大小(版面配置)之後再繪製(paint)。不加屬性的script元素可能改寫DOM,因此在下載與執行結束前會停止HTML的解析。加上defer後,下載與解析平行進行,執行則在解析之後依文件中撰寫的順序進行。若為async,下載一完成就執行,因此順序不保證。

  • A. 這是async屬性的行為。defer會在解析之後依撰寫的順序執行。
  • B. 即使加上defer,指令碼也會立即下載,並且不等待使用者操作就執行。
  • C. 正確。不停止解析而下載,在解析之後依撰寫的順序執行。
練習這個領域 前往領域頁面

Web技術基礎的其他題目

  1. 在瀏覽器中執行上方的JavaScript時,主控台顯示文字的順序,下列何者正確?
  2. 依瀏覽器的同源政策,被視為與 https://www.example.com/app/index.html 同源的URL為下列何者?
  3. https://app.example.com 網頁的JavaScript,要使用fetch對 https://api.example.net/orders 送出附有Content-Type: application/json本文的POST請求。此時跨來源資源共用(CORS)的行為,下列何者正確?
  4. 關於Service Worker的說明,下列何者正確?
  5. 在也支援智慧型手機的響應式設計網頁中,於<head>寫入 <meta name="viewport" content="width=device-width, initial-scale=1"> 的主要目的為下列何者?