顯示 loading 狀態
修改檔案:script.js
完成後看見:按下載入後立即顯示讀取中
CHAPTER 20 · PRACTICE WORKSPACE
能顯示遠端資料及 loading、success、empty、error 四態
TASK STATUS
修改檔案:script.js
完成後看見:按下載入後立即顯示讀取中
修改檔案:script.js
完成後看見:成功取得兩筆遠端格式資料
修改檔案:script.js
完成後看見:loading 立即出現,成功安全顯示卡片,空資料與失敗各有明確訊息
WORKSPACE
已完成 TASK-02;先核對可見結果,再前往 TASK-03。
FOCUS TASK · TASK-03
比較:空陣列代表成功但沒有內容,錯誤代表請求或解析失敗;使用者訊息要不同。
現在做:在 solution/script.js 暫時把 renderItems() 的 if (items.length === 0) 分支改成 throw new Error("把 empty 當 error"),按「模擬空資料」;觀察空陣列被錯誤訊息取代,再復原並重跑成功、空資料與失敗三條路線。
預期:故障版會把「成功但沒有資料」誤判成 error;復原後空資料顯示「目前沒有資料。」、404 顯示載入失敗,兩種訊息不同。
證據:留下空資料故障版與復原版的狀態文字,並完成 success/empty/error 對照表。
比較:遠端資料應以安全文字節點呈現,避免把資料誤當成 HTML。
現在做:在 solution/script.js 暫時把 createItemCard() 的 title.textContent 改成 title.innerHTML,重新整理後在 Console 執行 renderItems([{ title: '<img id="unsafe-node" src=x>外來文字' }]);確認 DOM 產生 img,再復原並重跑。
預期:故障版會把外來字串當成 HTML 節點;復原後只留下文字,不會產生 #unsafe-node,能說出遠端資料必須走 textContent 或等價的安全文字節點。
證據:用 document.querySelector('#unsafe-node') 的故障/復原結果與畫面截圖證明安全渲染責任。
完成條件:DONE-03:loading 立即出現,成功安全顯示卡片,空資料與失敗各有明確訊息;loading、success、empty、error 四態均可控重現,外來文字不會被當成 HTML
內建 JSON 練習
尚未載入
CONTINUE
前往 Solution,依要求完成「呈現 loading、success、empty、error 四態」。
CHAPTER HANDOFF
接收第 19 章:保留 selector、事件、目前項目、class 與 aria 狀態的讀碼方法;本頁是獨立資料載入器,不共用第 19 章 FAQ 的 HTML。
交給第 21 章:完成後要能重用 requestItems()、response.ok、response.json()、安全 render 與 loading/success/empty/error 四態;第 21 章會把資料來源換成 Sheet/GAS,接著處理 rows 正規化,不重做本章四態基礎。前往第 21 章