Chrome DevTools 深度技巧:8 个让你效率翻倍的「隐藏用法」

2106 字
11 分钟
Chrome DevTools 深度技巧:8 个让你效率翻倍的「隐藏用法」

Chrome 浏览器对前端来说,是调试的核心战场——但大多数人只用了它 30% 的能力。

我们每天点 Network、打断点、调样式,但那些「好用却不为人知」的功能,才是提升效率的关键。今天分享 8 个我日常开发必用的技巧,每个都附「具体场景 + 操作细节 + 避坑提示」,帮你把 DevTools 用成「效率武器」。

1. document.designMode:浏览器里的「网页编辑神器」#

一句话原理:让整个文档进入「可编辑模式」,所有文本节点都会变成「可修改状态」(类似 <div contenteditable="true">,但全局生效)。

具体用法 & 示例#

只需在控制台执行一行代码:

document.designMode = 'on' // 开启编辑模式

此时网页瞬间变成「可编辑状态」,你可以:

  • 改文案:比如电商页面的「立即购买」改成「限时抢购」,演示给产品看效果;
  • 调布局:比如把标题的「h1」改成「h2」(直接编辑文本节点的标签);
  • 截图素材:比如修改活动页的「倒计时数字」,截图用于 PPT 或宣传图。

注意事项#

  • 编辑后不要刷新页面,否则会恢复原始内容;
  • 无法修改「不可编辑元素」(比如 <input disabled>),但可以先改 disabled 属性:
    document.querySelector('input').disabled = false // 解除禁用再编辑
  • 关闭编辑模式:
    document.designMode = 'off'

2. Network 请求重放:再也不用反复点按钮#

核心场景:接口偶现问题、需要多次验证同一请求时,避免反复操作 UI。

操作步骤(带示例)#

假设你在调试「登录接口」,偶现 401 错误:

  1. 打开 Network → 切换到 Fetch / XHR 标签(过滤异步请求);
  2. 找到目标请求(比如 POST /api/login);
  3. 右键 → 选择 Replay XHR(或 Replay Fetch);
  4. 浏览器会原样重发请求(包含所有 header、cookie、body),结果会更新在 Network 面板。

高级用法#

  • 批量重放:选中多个请求,右键 → Replay XHR,适合测试接口幂等性(比如多次提交订单是否只生成一个记录);
  • 对比结果:重放前后的请求结果会保留在 Network 中,方便对比「成功」和「失败」的响应差异。

注意事项#

  • 重发请求时,cookie 和登录状态是复用当前页面的,所以如果登录过期,需要重新登录;
  • 对于「非幂等接口」(比如提交订单),重放可能导致重复操作,需谨慎使用。

3. Local Overrides:前端本地 Mock 接口,不等后端也能开发#

一句话原理:通过「本地文件覆盖」,让浏览器优先加载你修改后的接口响应,实现「前端独立开发」。

详细操作流程(附示例)#

假设你需要模拟「商品列表为空」的场景:

  1. 打开 Network → 切换到 Overrides 标签;
  2. 点击「Select folder for overrides」,选择一个空的本地目录(用于保存修改后的文件);
  3. 找到目标请求(比如 GET /api/goods),右键 → Save for overrides(浏览器会把请求的响应保存到本地目录);
  4. 打开本地目录中的响应文件(比如 goods.json),修改内容:
    {
    "code": 200,
    "data": [], // 改成空数组
    "msg": "success"
    }
  5. 刷新页面,浏览器会优先加载本地修改后的响应,UI 会显示「暂无商品」。

适用场景#

  • 后端接口未完成,前端先开发 UI;
  • 模拟异常数据(比如 code: 500msg: "服务器错误");
  • 测试边界情况(比如空数据、超长文本、特殊字符)。

注意事项#

  • 修改后的文件必须保存(Ctrl + S),否则浏览器不会生效;
  • 如果接口有缓存,需要在 Network 面板勾选「Disable cache」(禁用缓存);
  • 跨域请求无法覆盖?可以配合 CORS Unblock 插件解决。

4. Copy as fetch:快速生成可修改的请求代码#

核心价值:把 Network 中的请求转换成「可编辑的 fetch 代码」,方便修改参数后重发。

操作示例#

假设你需要测试「不同用户的登录响应」:

  1. Network 中找到登录请求(POST /api/login);
  2. 右键 → CopyCopy as fetch
  3. 粘贴到控制台,得到以下代码:
    fetch('https://example.com/api/login', {
    headers: {
    'content-type': 'application/json',
    cookie: 'session_id=abc123',
    },
    body: JSON.stringify({
    username: 'admin',
    password: '123456',
    }),
    method: 'POST',
    })
  4. 修改 usernametestuser,回车执行,即可测试新用户的登录响应。

4copy_as_fetch
4copy_as_fetch

高级用法#

  • 修改请求方法:比如把 POST 改成 GET,测试接口的兼容性;
  • 添加 header:比如加 Authorization: Bearer token,测试授权接口;
  • 保存为代码片段:将修改后的 fetch 代码保存到 Sources → Snippets,下次直接运行。

5. Network 过滤反转:只看你关心的请求#

痛点:页面请求太多(埋点、静态资源、第三方接口),找不到业务接口?

操作步骤(带实用规则)#

  1. 打开 Network 面板的过滤框(顶部搜索栏);
  2. 输入过滤规则,勾选「Invert」(反转),即可排除不需要的请求。

5before
5before

5after
5after

看这滚动条,你懂我想说什么吧

实用过滤规则示例#

  • 排除静态资源-*.css -*.png -*.jpg -*.js(过滤掉样式、图片、JS 文件);
  • 排除第三方接口-api.iconify.design -posthog.com -analytics.example.com(过滤掉图标、埋点、统计接口);
  • 排除 OPTIONS 请求-method:OPTIONS(过滤掉预检请求);
  • 只看业务接口/api(只显示路径包含 /api 的请求) + 反转排除其他。

我的常用示例: -.css -.png -.jpg -.png -.webp -.jpeg -.js -.svg -.gif -.ico -.woff2 -.eot -.ttf -.otf -.mp4 -.mp3 -api.iconify.design -posthog.com 前面是静态资源过滤,后面是非业务接口过滤。这样剩下的只有接口 PS 调试时记得取消过滤以免出现低级失误 ^_^

规则说明#

  • - 表示「排除」,+ 表示「包含」(默认);
  • 支持通配符 *(比如 *.png 匹配所有 PNG 图片);
  • 支持按「方法」过滤(比如 method:POST 只看 POST 请求)。

6. $0:快速操作选中的 DOM 元素#

一句话用法:在 Elements 面板选中 DOM 后,控制台用 $0 直接引用该元素。

实用示例#

  • 修改样式:比如把按钮改成红色(实时预览):
    $0.style.backgroundColor = 'red'
    $0.style.color = 'white'
  • 获取属性:比如获取链接的 href 或自定义属性 data-id
    $0.href // 获取链接地址
    $0.dataset.id // 获取 data-id 属性(<div data-id="123">)
  • 操作元素:比如让元素滚动到可视区域:
    $0.scrollIntoView({ behavior: 'smooth' }) // 平滑滚动

扩展技巧#

  • $1:上一个选中的 DOM 元素;
  • $2:上上个选中的 DOM 元素(最多到 $4);
  • $$('selector'):等价于 document.querySelectorAll(比如 $$('button') 获取所有按钮)。

7. Console Importer:控制台直接用 npm 包#

核心场景:临时测试工具库(比如 dayjs、lodash),不用写 HTML 引入。

操作步骤#

  1. 安装 Chrome 插件:Console Importer(从 Chrome 商店搜索安装);
  2. 打开控制台,输入 $i('包名'),比如:
    $i('dayjs') // 安装 dayjs
    $i('lodash') // 安装 lodash
  3. 等待安装完成(控制台会提示 Imported dayjs (version x.x.x));
  4. 直接使用:
    dayjs().format('YYYY-MM-DD') // 格式化日期
    _.debounce(() => console.log('防抖'), 1000) // 测试防抖函数

注意事项#

  • 插件会从 unpkg.com 加载 CDN 资源,需要联网;
  • 刷新页面后,安装的包会失效(临时使用);
  • 支持安装多个包(比如 $i('dayjs', 'lodash'))。

8. Ctrl + P:秒级定位文件并打断点#

痛点:大型项目文件太多,找不到需要调试的文件?

操作步骤#

  1. 打开 Sources 面板;
  2. Ctrl + P(Mac 是 Cmd + P),弹出文件搜索框;
  3. 输入文件名(支持模糊匹配),比如 Home.vueButton.jsx
  4. 回车直达文件,直接在代码行号旁点击打断点。

高级用法#

  • 路径别名:如果项目用了 @ 别名(比如 @/views/Home.vue),直接输入 @/views/Home 即可定位;
  • 搜索代码片段:输入 function login,可以找到包含 login 函数的文件;
  • 快速跳转:定位到文件后,按 Ctrl + G(Mac 是 Cmd + G)输入行号,直接跳转到指定行。

总结:DevTools 是「效率放大器」#

这些技巧的核心不是「冷门」,而是「把工具用对场景」——比如:

  • 给产品演示用 document.designMode
  • 联调用 请求重放Local Overrides
  • 调试 DOM 用 $0
  • 找文件用 Ctrl + P

DevTools 的能力远不止这些,但把基础功能用透,就能解决 80% 的调试问题。下次遇到问题,先想想:「Chrome 有没有现成的功能能帮我?」

最后,推荐几个配套工具:

  • React DevTools / Vue DevTools:框架专属调试插件;
  • Lighthouse:性能分析工具;
  • Performance:性能 timeline 分析。

把这些工具组合起来,你会发现——Chrome 真的是前端的「第二个 IDE」。

支持与分享

如果这篇文章对你有帮助,欢迎分享给更多人或赞助支持!

Chrome DevTools 深度技巧:8 个让你效率翻倍的「隐藏用法」
https://blog.fridolph.top/posts/2025-10-16__chrome-devtools/
作者
Fridolph
发布于
2025-10-16
许可协议
CC BY-NC-SA 4.0

评论区

Profile Image of the Author
Fridolph
热爱 Coding、音乐和羽毛球的 90 后全栈工程师
公告
欢迎访问我的小站 ^_^ 我是昇哥,热爱Coding,喜爱音乐、羽毛球和摄影的 90后全栈工程师
分类
标签

文章目录