National Yang Ming Chiao Tung University
Uedu Main Site
Explore Uedu
Student Console
Register as Member/Login
Research Informed Consent Center
Survey Center
Educational Big Data Challenge
Claim or create a course
Try a Scenario Task
Support & Messages
Uptime Data

UeduGPTs

--

Jupyters

1

Local AI

--

Uedu Code

--

陽明交大 AQI 69 24°C PM2.5 26
AI Reply Desktop Notifications

Show a desktop notification when the AI TA finishes replying

Chat Message Notifications

Notify me when classmates post messages in the forum

Sound notification

Play an alert sound whenever there is a new notification

Unit 01

開發者工具與主控台

Chrome DevTools、Console 與 Network 面板
Interaction導覽 15 minute(s)

Learning Objectives

  • 用快捷鍵或選單開啟 Chrome 開發者工具,說出主要面板的用途
  • 在 Console 面板直接執行 JavaScript,並用 console.log、warn、error 等方法輸出訊息
  • 從主控台的錯誤訊息找出錯誤的種類與位置
  • 用 Network 面板查看網頁發出的請求、狀態碼與回應內容

為什麼要學開發者工具

寫 JavaScript 時,程式出錯並不會在網頁上跳出提示,畫面只是「沒反應」。錯誤訊息、程式印出的內容、網頁向伺服器要了哪些資料, 都在瀏覽器內建的開發者工具(Chrome DevTools)裡。學會看開發者工具,是寫網頁程式的第一步。

開發者工具可以做到:

  • 直接檢視與修改網頁的 HTML(DOM)和 CSS,立刻在畫面上看到結果
  • 在主控台看錯誤訊息、程式輸出,也可以直接輸入 JavaScript 執行
  • 查看網頁載入了哪些檔案、每個請求花了多少時間
  • 模擬手機、平板的螢幕尺寸,檢查網頁在不同裝置上的樣子

這一課以 Chrome 為例;Edge 使用相同的核心,開發者工具幾乎一樣,Firefox 也有功能類似的開發者工具。

開啟開發者工具,認識各個面板

打開一個你常用的網站,跟著下面的步驟在自己的 Chrome 上操作一次(投影片 Lab01)。每完成一步就按「下一步」。

  1. 1

    開啟開發者工具

    三種方法任選一種:

    • 快捷鍵:Windows/Linux 按 F12 或 Ctrl+Shift+I;macOS 按 Command+Option+I
    • 在網頁上按右鍵,選「檢查」:會直接選取你按的那個元素
    • Chrome 右上角的選單 →「更多工具」→「開發人員工具」

    開發者工具通常出現在視窗右側或下方,可以用它右上角的「⋮」選單切換停靠位置。

  2. 2

    切換到手機畫面(裝置模式)

    點開發者工具左上角的手機與平板圖示(Toggle device toolbar),或按 Ctrl+Shift+M(macOS:Command+Shift+M)。 網頁會縮成手機的寬度,上方可以選擇不同的裝置型號、調整寬度,用來檢查網頁的自適應(RWD)版面。

    裝置模式只是模擬螢幕尺寸與觸控,無法完全取代在真正的手機上測試。

  3. 3

    認識各個面板

    開發者工具上方是一排分頁,每一個叫做一個面板(panel)。中文介面的名稱寫在括號裡:

    面板 用途
    Elements(元素) 檢視、修改 HTML 與 CSS;在 HTML 上連按兩下就能直接編輯
    Console(主控台) 看錯誤訊息與程式輸出,直接輸入 JavaScript 執行
    Sources(來源) 看網頁載入的程式碼,設定中斷點(breakpoint)讓程式停下來一行一行檢查
    Network(網路) 網頁發出的每一個請求:檔案名稱、狀態碼、大小與時間
    Performance(效能) 錄下一段時間內網頁做了哪些事、各花多少時間
    Memory(記憶體) 查看網頁使用的記憶體,找出記憶體洩漏
    Application(應用程式) 檢查 cookie、localStorage 等網頁儲存的資料
    Privacy and security 檢查網站的憑證與 HTTPS 狀態(Chrome 134 之前叫 Security)

    面板太多放不下時,會收在右邊的「»」裡。

  4. 4

    用 Elements 面板改網頁

    按 Ctrl+Shift+C(macOS:Command+Shift+C)進入選取模式,把滑鼠移到網頁上的標題並點一下,Elements 面板會跳到對應的 HTML。

    在標題的文字上連按兩下,改成別的字,按 Enter:畫面立刻跟著改變。右側的 Styles 窗格可以修改 CSS,例如把 color 改成 red。

    這些修改只存在你的瀏覽器裡,重新整理網頁就會恢復原狀,所以可以放心嘗試。

  5. 5

    開啟 Console 面板

    按 Ctrl+Shift+J(macOS:Command+Option+J)會直接開啟 Console 面板。

    在 > 提示符號後面輸入 1 + 2 按 Enter,下一行會顯示 3;輸入 document.title 會顯示網頁的標題。 主控台可以直接執行任何 JavaScript,而且是在目前這個網頁上執行,例如輸入 document.body.style.background = 'gold',網頁背景就變成金色。

    按 Shift+Enter 可以換行輸入多行程式;按向上鍵可以叫出剛剛輸入過的指令。

  6. 6

    開啟 Network 面板,重新整理網頁

    切換到 Network 面板,按 F5 重新整理網頁。開發者工具開著時才會記錄,所以要先開面板再重新整理。

    下方會列出網頁載入的每一個檔案:HTML 文件、JavaScript、CSS、圖片、字型等。點其中一個檔名(例如副檔名是 .js 的檔案), 右邊的 Headers 分頁顯示請求的網址與狀態碼,Preview、Response 分頁顯示伺服器回傳的內容。

這段導覽完成了

Console 面板與 console 方法

程式裡可以用 console 物件的方法,把訊息印到主控台。這是最常用的除錯方法:在可疑的地方印出變數的值,看看和你想的一不一樣。

方法 用途
console.log(值1, 值2, …) 一般輸出,多個值之間自動加空白
console.info(…) 資訊(Chrome 裡的樣子和 log 相同)
console.warn(…) 警告,黃色底
console.error(…) 錯誤,紅色底,並附上呼叫的位置
console.table(陣列或物件) 用表格顯示陣列或物件
console.assert(條件, 訊息) 條件是 false 時才印出錯誤訊息,條件成立時什麼都不印
console.count(標籤) 計算這一行被執行了幾次
console.time(標籤)、console.timeEnd(標籤) 計算兩行之間經過的時間
console.clear() 清空主控台

主控台上方的篩選器可以只顯示錯誤、警告或一般訊息;相同的訊息連續出現時會堆疊成一行,前面顯示次數。 在主控台按右鍵選「Save as…」可以把內容存成記錄檔(投影片 Lab02)。

看懂錯誤訊息:程式出錯時,主控台會出現紅色的一行,例如

Uncaught ReferenceError: score is not defined
    at app.js:12

ReferenceError 是錯誤的種類(用了沒有宣告的名字),後面是說明,app.js:12 是出錯的檔案與行號,點它會跳到 Sources 面板的那一行。 Uncaught 表示這個錯誤沒有被程式接住,程式就停在這裡,後面的程式不會執行。

互動練習:在主控台輸出訊息

右邊的「主控台」就像 Chrome 的 Console 面板,警告和錯誤會用不同的顏色顯示。在 JavaScript 分頁的最後面依序完成任務,每次改完按「執行」。

想一想:開發者工具與主控台

1.

在 Windows 的 Chrome 上,想直接開啟 Console 面板,要按哪一組快捷鍵?

2.

想在網頁上直接修改一個標題的文字和 CSS 顏色,試試看效果,應該用哪個面板?

3.

主控台出現 Uncaught ReferenceError: total is not defined at app.js:8,最可能的原因是什麼?

4.

console.assert(1 > 2, '1 沒有大於 2') 會在主控台顯示什麼?

第 1 次作答

Network 面板

Network 面板記錄網頁發出的每一個請求(request)。每一列是一個檔案或一筆資料,主要欄位:

欄位 意思
Name 請求的檔案名稱或網址
Status HTTP 狀態碼:200 成功、304 沒有變更(用瀏覽器快取)、404 找不到、500 伺服器錯誤
Type 資源的類型:document、script(JavaScript)、stylesheet、png、fetch、xhr…
Initiator 是誰發出這個請求:HTML 裡的標籤,或某支 JavaScript 的哪一行
Size 傳輸的大小
Time 從送出請求到下載完成的時間;右邊的 Waterfall 把時間畫成長條圖

上方的工具列:

  • 紅色圓點:開始、停止記錄
  • 清除(圓圈加斜線):清空目前的紀錄
  • 篩選:輸入文字找檔名,或用 All、Fetch/XHR、JS、CSS、Img 等按鈕只看某一類;寫 AJAX 程式時最常用 Fetch/XHR
  • Preserve log:勾選後,換頁或重新整理時不會清掉紀錄

點一個請求可以看細節:Headers(網址、方法、狀態碼、標頭)、Preview(整理過的預覽,JSON 會變成可以展開的樹)、Response(原始內容)、Timing(各階段花的時間)。

下面的沙箱沒有真的伺服器,網路請求會由這一課準備好的假資料回應;主控台裡 → GET 開頭的那一行,就相當於 Network 面板裡的一筆紀錄。

互動練習:觀察網路請求與狀態碼

起始程式已經向 /api/hello 送出一個請求,主控台先出現 → GET /api/hello,約 0.3 秒後才印出收到的資料。這一課準備了兩個網址:/api/hello(狀態碼 200)與 /api/missing(狀態碼 404),其他網址都會連線失敗。

想一想:Network 面板

1.

Network 面板裡一個請求的 Status 是 404,代表什麼?

2.

想知道某個請求是哪一支 JavaScript 的哪一行發出的,要看哪一個欄位?

3.

網頁載入了幾十個檔案,你只想看 JavaScript 用 fetch 送出的資料請求,應該怎麼做?

第 1 次作答

重點精華回顧

  • 開啟開發者工具:F12、Ctrl+Shift+I(macOS:Command+Option+I),或在網頁上按右鍵選「檢查」。
  • Elements 改 HTML 與 CSS、Console 看輸出與錯誤、Sources 設中斷點、Network 看請求;裝置模式(Ctrl+Shift+M)模擬手機畫面。
  • Console 面板可以直接執行 JavaScript;程式裡用 console.log、warn、error、table、assert 等方法輸出訊息。
  • 錯誤訊息包含錯誤種類、說明與檔案行號,Uncaught 表示程式在那裡停止了。
  • Network 面板列出每個請求的名稱、狀態碼、類型、發起者、大小與時間;用 Fetch/XHR 篩選程式送出的資料請求。
這一課完成了!
Next lesson:在網頁中使用 script
你目前沒有登入,學習進度只存在這個瀏覽器。 Login 後,進度會跟著帳號,換電腦也看得到。