混迹DevTools的时间久了就会发现,不同浏览器自带的调试面板跟浏览器本身一样,功能上各有各的脾气。但有一批低调的跨平台操作,在Chromium系(Chrome、Edge、Opera等)、火狐和Safari里都能跑通,用好了调试效率直接拉满。下面盘点的这几个骚操作,每一步都掰开揉碎了说,保证看完就能上手。
搜索DOM树
页面上的DOM树有时候嵌套得像俄罗斯套娃,想找到某个节点得翻半天。这时候直接按下Cmd + F(Mac)或Ctrl + F(Windows),搜索框就弹出来了。往里扔的东西不光是文本,还能用正经的CSS选择器,比如.red会高亮所有class带red的节点;或者用XPath,像//div/h1能精准定位到div下面的h1。在Chromium浏览器里,一边打字一边自动跳转到匹配的第一个节点,这功能在搜索词比较长或者DOM树特别庞大的时候反而碍事,经常刚输一半就被拽走了。可以按F1打开设置面板,找到Preferences → Global,把“Search as you type”关掉,瞬间清净。定位到目标节点后,右键点它,选“Scroll into view”,页面自动滚到那个元素所在的位置,不用再肉眼扫描。
控制台取节点
很多时候想在控制台里折腾某个DOM元素,又懒得写document.getElementById那一长串。DevTools提供了好几条捷径。当在元素面板(Elements)里选中某个节点后,直接回控制台敲$0,就能拿到这个节点。Chromium浏览器更狠,$1、$2……按选中顺序倒着往回取,最近选中的是$0,上一个就是$1,像翻历史记录一样。还有一种办法:右键点击元素面板里的节点,选Copy → Copy JS path,系统自动生成一段document.querySelector表达式,粘到控制台就能用。最灵活的一招是存成临时变量:在Chromium里右键选“Store as global variable”,控制台会出现一个叫temp1的变量;火狐里对应的是“Use in Console”;Safari则是“Log Element”。这个临时变量能直接在控制台里点来点去,比如temp1.style.backgroundColor = 'red',改样式测效果比刷新页面快多了。
徽章可视化
DevTools里藏着一堆小徽章,贴在节点旁边,点一下就能把对应的CSS特性在页面上画出来。这玩意儿在不同浏览器里叫法不一样,但核心逻辑类似。在Safari的元素面板工具栏上有个徽章按钮,点开可以开关各种徽章。如果一个元素加了display: grid或inline-grid,旁边就会出现一个“grid”小标,戳它一下,页面上的网格线、轨道尺寸、行号全都高亮显示,布局问题一眼看穿。火狐的徽章里有个“scroll”标,专门标记可滚动元素,点击后还能把导致溢出的元素也揪出来,旁边再贴个“overflow”徽章。Chromium浏览器里右键任意节点选“Badge settings…”,弹出一个列表,里面罗列了所有可用的徽章类型,比如开了scroll-snap-type的元素会带上“scroll-snap”徽章,点击就能切换滚动吸附的覆盖层。这些徽章就像页面上的便利贴,哪个元素有特殊属性一目了然。
截图小能手
现在所有主流浏览器的DevTools都支持直接截取某个节点的图,不用再拿第三方工具裁剪。操作入口都在右键菜单里,但每个浏览器的叫法不同,下面这张表对照着找就行:
| 浏览器 | 右键菜单项 |
|---|---|
| Chromium | 捕获节点截图 |
| Firefox | 节点截图 |
| Safari | 截取元素 |
想截整个页面的话,把同样的操作作用在<html>节点上就行。有个细节要注意:Safari截出来的图会保留元素原本的背景透明区域,而Chromium和火狐会把透明背景自动填成白色。比如页面有个半透明弹窗,Safari截出来能看到背后的内容,另外两个浏览器截出来就是白底弹窗。还有一种“响应式截图”玩法,能固定视口宽度再截图。Chromium里按Cmd + Shift + M(Mac)或Ctrl + Shift + M(Windows),或者点元素面板左上角的“设备”图标;火狐走工具 → 浏览器工具 → 响应式设计模式;Safari从顶部菜单开发 → 进入响应式设计模式。进去之后随便拖拽视口宽度,调好尺寸再截图,做适配测试的时候巨好用。
Chrome技巧
Chrome DevTools里藏了一个专门对付顶层元素(top-layer)的功能。像<dialog>、alert、模态框这类元素,一旦被加到顶层,旁边就会出现一个“top-layer”徽章。点一下这个徽章,直接跳转到</html>标签后面凭空多出来的一个#top-layer容器。容器里元素的排列顺序跟堆叠顺序一致,最后一个在最高层。容器里每个元素旁边还有个“reveal”小标,点一下又能跳回原来的节点位置。这套来回跳转的机制,调试弹窗层级关系时简直绝绝子。
火狐跳转ID
火狐开发者工具有个不起眼但巨省事的特性:页面上但凡有个元素通过id属性引用另一个元素(比如<label for="name">),被引用的那个id在DOM树里会自带下划线,看起来像个超链接。按住Cmd(Mac)或Ctrl(Windows)再点击这个下划线,页面直接跳转到目标元素的位置。比方说一个<a href="#section3">,按住快捷键点一下#section3,立马飞到对应的锚点元素。这功能在表单校验或者长页面内部跳转的场景里,能少翻无数层嵌套。
