前端开发浏览器调试方法

一、背景

作为前端工程师,无论是开发还是线上环境。移动端或者 PC 端,经常会遇到一些 bug,那么如何在浏览器快速定位和解决问题呢。

调试本身可以分为两个过程,定位问题解决问题 。而更重要的显然是如何快速的定位问题。本文将集中讨论如何 快速发现调试问题方面。

二、调试工具

现代浏览器(如 Chrome、Firefox、Edge 等)都内置了强大的开发者工具(DevTools),这是前端调试的核心工具。

1. 主要功能面板

  • Elements:查看和编辑 HTML 和 CSS,实时调试样式。
  • Console:查看 JavaScript 错误、输出调试信息、执行 JavaScript 代码。
  • Sources:调试 JavaScript 代码,设置断点、单步执行、查看调用栈等。
  • Network:查看网络请求,分析请求头、响应头、响应内容等。
  • Performance:分析页面性能,查找性能瓶颈。
  • Application:查看和操作本地存储、Cookie、缓存等。

2. Elements

Elements 面板会显示目前网页中的 DOM、CSS 状态,且可以修改页面上的 DOM 和 CSS,即时看到结果,省去了在编辑器修改、储存、浏览器查看结果的流程。

$n

开启 Elements 面板时,标记的元素后方总会有个 == $0

选中一个元素后再到 Console 面板输入$0,会发现刚刚选中的元素出现在 Console 中,如果再多点几个元素,还可以用$1$2$3$4(到此为止)来拿到前几次选到的元素。

另外在 Console 中对元素按下右键,选择 Reveal in Elements Panel 可以跳到该元素在 Elements 面板中的位置,对 Elements 面板的元素按下右键则有 Scroll to view 可以把视野滚到能看见元素的地方。

想要在 Console 面板中用 JavaScript 操作元素时,$0就非常方便,另外也可以搭配 console.dir($0) 来观察元素的各个属性,如果在 Console 直接输入 $0 或是 console.log($0) 只会显示元素自身。

3. Console

console 是 JavaScript 中最常用的调试工具之一。除了 console.log(),还有其他有用的方法:

console.table() 可用于打印 obj/arr 成表格

console.trace() 可用于 debugger 堆栈调试,方便查看代码的执行逻辑,也可以帮助我们看一些库的源码

console.count会印出这个标签被执行了几次,预设值是default,可以用在快速的计数。

4. Sources

Sources 面板中,可以设置断点来暂停代码执行,逐步检查代码的运行状态。

  • 普通断点:在想断住的那一行左侧单击一下就可以添加一个断点,运行到该处就会断住。

  • 条件断点:右键单击代码所在的行左侧,会出现一个下拉框,可以添加一个条件断点。输入条件表达式,当运行到这一行代码并且表达式的值为真时就会断住。

  • DOM 断点:在 Chrome Devtools 的 Elements 面板的对应元素上右键,选择 break on,可以添加一个 dom 断点,也就是当子树有变动、属性有变动、节点移除这三种情况的时候会断住。可以用来调试导致 dom 变化的代码。
  • Event Listeners 打断点:在 Chrome Devtools 的 Elements 面板上找到你想排查的 dom 节点,右侧面板 Event Listeners 中会有当前阶节点,可以当前节点打断点调试。

  • 异常断点:在 Debugger 面板勾选 Uncaught Exceptions 和 Caught Exceptions 可以添加异常断点,在抛出异常未被捕获或者被捕获时断柱。用来调试一些发生异常的代码时很有用。

5. Network

Network 面板中,可以查看所有网络请求的详细信息,包括请求头、响应头、状态码、响应时间等。

  • 过滤请求

    • 使用过滤器快速找到特定的请求类型(如 XHR、JS、CSS 等)。
    • 使用搜索框查找特定的请求 URL 或响应内容。
  • 分析请求问题

    • 检查请求状态码(如 404、500 等)以确定问题。
    • 查看请求参数和响应内容,确保数据正确。

6. Application

Application 面板可以查看和操作本地存储、Cookie、缓存等。

  • 检查 LocalStorage 和 SessionStorage

    • 查看存储的键值对,确保数据正确。
    • 手动添加、编辑或删除存储项。
  • 检查 Cookies

    • 查看 Cookie 的详细信息,包括名称、值、过期时间等。
    • 手动编辑或删除 Cookie。

本文参考文章地址:juejin.cn/post/705549...

相关推荐
卖报的小行家_1 分钟前
读《Vue.js设计与实现》第四章·响应系统的作用与实现
前端
七月丶3 分钟前
🚀 前端缓存踩坑指南:如何优雅地解决浏览器缓存问题?
前端
沉默王二3 分钟前
更快更强!字节满血版DeepSeek在IDEA中真的爽!
java·前端·程序员
掘金酱9 分钟前
👏 用idea传递无限可能!AI FOR CODE挑战赛「创意赛道」作品提交指南
前端·人工智能·trae
Hamm12 分钟前
咦,你的Git仓库贡献者里怎么有这么多大佬???
前端·git·github
陈卓4101 小时前
Redis-限流方案
前端·redis·bootstrap
顾林海1 小时前
Flutter Dart 运算符全面解析
android·前端
七月丶1 小时前
🚀 现代 Web 开发:如何优雅地管理前端版本信息?
前端
漫步云端的码农1 小时前
Three.js场景渲染优化
前端·性能优化·three.js
悬炫1 小时前
赋能大模型:ant-design系列组件的文档知识库搭建
前端·ai 编程