概覽#
CSS 篇結束,這一章處理 Elements panel 左側的 Document Object Model (DOM) 結構:怎麼快速瀏覽、選取、編輯、隱藏、複製。這些操作大多都很簡單,也都有多種達成方式,但熟悉之後可以省下不少時間。
$0:被選中的元素#
開啟 Elements panel 時,被標記的元素後方會出現 == $0。這個小提示其實在告訴你:剛剛選中的元素已經被綁到變數 $0,可以在 Console panel 直接使用。
操作流程:
- 在 Elements panel 點一個元素
- 切到 Console panel,輸入
$0,就會拿到剛剛點的元素
更進階的:DevTools 會記住最近選過的幾個元素,可以用 $0、$1、$2、$3、$4 拿到前幾次選到的元素(目前到 $4 為止)。
元素與 panel 之間的雙向跳轉#
- 在 Console 拿到的元素上按右鍵 ➡️
Reveal in Elements Panel,會跳到 Elements 對應位置 - 在 Elements panel 的元素上按右鍵 ➡️
Scroll into view,會把頁面捲到看得見該元素的位置
$0 與 console.dir#
想觀察 $0 的所有屬性(不只 DOM tree 顯示的那些),用 console.dir($0) 比 console.log($0) 更有用:
console.log($0):印出 DOM 元素本身(跟 Elements panel 看到的一樣)console.dir($0):把元素當成 JavaScript 物件展開,可以看到所有屬性
console.dir($0);搜尋#
按 Cmd+F(Mac)會在 Elements panel 下方跳出搜尋列。搜尋支援兩種模式:
- 純字串:在 DOM 結構中搜尋符合的文字
- CSS 選取器(Selector):可以直接寫
.btn、#id、div > a等 CSS 選取器來找元素
對複雜頁面、想驗證某個 selector 是否會選到對的元素時很有用。
編輯 DOM#
DOM 結構可以直接在 Elements panel 編輯:
- 拖曳元素改變層級與順序
Cmd+C、Cmd+V複製貼上- 貼錯位置:
Cmd+Z復原、Cmd+Shift+Z重做
貼上元素時,元素會被加到目前選定元素的最後一個 child 之下。如果貼到 self-closed 元素如
<input />內,DOM 結構上會顯示嵌入的 child,但畫面上不會渲染(因為 self-closed 不該有 child)。
右鍵選單#
選中元素後,按左側的三個點點,或是在元素內按右鍵,會打開功能選單。需要注意的是:
- 在元素「內」按右鍵:完整的元素操作選單
- 在屬性(attribute)上、URL 上按右鍵:選單會不一樣,例如 URL 上會出現
Reveal in Sources panel、Open in new tab
下面挑幾個值得一提的功能。
Hide element#
如果某元素被遮住、選不到底層的東西,可以:
- Inspect 上層元素 ➡️
Hide element(或鍵盤按H) - 反覆操作,直到看見想選的目標
被隱藏的元素左側會出現小圓圈標示。
Hide element 的效果相當於
visibility: hidden;,元素看不到也 inspect 不到,但「不影響原本的排版」(仍佔空間),所以底層元素的位置不會跑掉,比直接刪掉更適合 debug。
Edit as HTML#
想修改單一 attribute 或元素內文時,直接雙擊就能進入編輯模式。但如果想一次編輯整個元素的 markup(包括屬性、子元素),用 Edit as HTML 會更方便,特別是新增整段元素的時候。
Copy#
爬蟲、自動化測試常用的功能:
Copy selector:自動產生一個能選到該元素的 CSS 選取器(Selector)Copy JS Path:產生document.querySelector(...)形式的 JavaScript 程式碼
自動產生的 selector 不保證效能、長度與穩定度(例如可能用了奇怪的
:nth-child鍊),只保證「現在」能選到該元素。實際丟到爬蟲或測試前最好手動檢視。
Expand recursively#
展開所有子元素。其他達成方式:
- 對元素按右鍵選
Expand recursively - 按住
Option或Alt點擊展開三角形:效果一樣 - 鍵盤左右方向鍵展開/收合,搭配
Option/Alt可以一次展開全部
對深層 DOM 結構非常實用,不用一層一層手動點。
Break on#
Break on 用來在元素被修改、屬性改變、被移除時觸發 JavaScript 斷點(Breakpoint),這部分屬於 DOM 斷點的範疇,會在 Sources panel 章節展開介紹。
銜接#
Elements panel 的介紹到此告一段落,下一章正式進入 Console panel:先講 console message 的 level、過濾、settings,再進到 Console API、Console Utilities API、執行 JavaScript 的小撇步。
原文出處#
- 原書/iThome:https://ithelp.ithome.com.tw/articles/10239614