前端开发浏览器调试方法

一、背景

作为前端工程师,无论是开发还是线上环境。移动端或者 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...

相关推荐
10年前端老司机2 小时前
什么!纯前端也能识别图片中的文案、还支持100多个国家的语言
前端·javascript·vue.js
摸鱼仙人~2 小时前
React 性能优化实战指南:从理论到实践的完整攻略
前端·react.js·性能优化
程序员阿超的博客3 小时前
React动态渲染:如何用map循环渲染一个列表(List)
前端·react.js·前端框架
magic 2453 小时前
模拟 AJAX 提交 form 表单及请求头设置详解
前端·javascript·ajax
小小小小宇7 小时前
前端 Service Worker
前端
只喜欢赚钱的棉花没有糖8 小时前
http的缓存问题
前端·javascript·http
小小小小宇8 小时前
请求竞态问题统一封装
前端
loriloy8 小时前
前端资源帖
前端
源码超级联盟8 小时前
display的block和inline-block有什么区别
前端
GISer_Jing8 小时前
前端构建工具(Webpack\Vite\esbuild\Rspack)拆包能力深度解析
前端·webpack·node.js