前端开发浏览器调试方法

一、背景

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

相关推荐
水银嘻嘻7 分钟前
08 web 自动化之 PO 设计模式详解
前端·自动化
Zero1017132 小时前
【详解pnpm、npm、yarn区别】
前端·react.js·前端框架
&白帝&2 小时前
vue右键显示菜单
前端·javascript·vue.js
Wannaer2 小时前
从 Vue3 回望 Vue2:事件总线的前世今生
前端·javascript·vue.js
羽球知道3 小时前
在Spark搭建YARN
前端·javascript·ajax
光影少年3 小时前
vue中,created和mounted两个钩子之间调用时差值受什么影响
前端·javascript·vue.js
青苔猿猿3 小时前
node版本.node版本、npm版本和pnpm版本对应
前端·npm·node.js·pnpm
一只码代码的章鱼4 小时前
Spring的 @Validate注解详细分析
前端·spring boot·算法
zimoyin4 小时前
Kotlin 协程实战:实现异步值加载委托,对值进行异步懒初始化
java·前端·kotlin
程序员与背包客_CoderZ6 小时前
Node.js异步编程——Callback回调函数实现
前端·javascript·node.js·web