元素面板(Element)
左侧 DOM 树
左侧为 DOM 元素树,支持多种操作,如编辑、删除、新增、复制 DOM 元素,更多可查看右键菜单。
鼠标选择 dom 元素,蓝色表示本体部分,绿色表示 padding,橘黄色表示 margin
搜索 dom 节点,搜索到的节点会被高亮显示
ctrl+f 打开搜索
搜索方式一://section/p //表示全局
搜索方式二:直接搜内容,会匹配名字相同的
搜索方式三: 节点选择器
右键属性有各种方法可以使用
发生中断的条件:可以在代码更改的时候强行断点断住
复制:可以复制元素,可以复制样式等
右侧菜单
右侧菜单选项里的内容对应的都是当前选中的元素
样式
选中元素的样式,可编辑、添加 CSS 样式,实时预览。
可以给某个元素增加新类或者取消
可以修改应用的 css 类属性以及增加新的类,方便测试
可以激活伪类,可以搜索
这个用户代理样式表(user agent stylesheet)表示浏览器给我们的样式
如果有继承样式,也可以查看是从哪里继承过来的
可以查看源代码
可视化编辑器
可视化的颜色、贝塞尔曲线、阴影编辑器,所见即所得
- 颜色编辑器:只要是颜色属性,都可以点击色块按钮可视化编辑颜色,支持拖动设置颜色、取色、设置对比度。
- Grid、Flex 布局编辑器:当使用弹性布局 Grid、Flex 时,支持可视化编辑布局对齐方式。
- 阴影编辑器:阴影 shadow 属性上,会出现编辑器按钮,可视化编辑阴影效果。
- 贝塞尔曲线编辑器:在动画 transition、animation 中会用到贝塞尔曲线函数(缓动函数)。
计算样式
可以看一个 dom 被渲染时候的实际属性,所有的属性都会有值(层叠样式),总之,一个元素的所有 css 属性值都必须有值;还有一张图,可以直观展示 padding,margin,content 的大小;还可以进行搜索和筛选
点小箭头可以找到是哪句 css 导致他生效的
还可以查看字体
布局
grid 布局,flex 布局调试
可以勾选会进行高亮,方便查看和调试
也可以通过左侧 dom 树的小标来打开和关闭
事件监听器
可以查看当前这个元素上挂载的事件,也可以勾选查看所有祖先的监听,也可以移除,也可以进入到源码。
framework 监听器?
DOM 断点
选中 DOM 元素,右键设置中断点,可以在元素更改(JS 代码修改 DOM)时触发断点。
添加后可以在源代码中查看到已添加的 DOM 断点,或者元素面板中的“DOM 断点”。
属性
查看一个节点的所有属性
控制台面板(Console)
主要功能就是调试 JavaScript 代码
运行代码
可执行任意 JS 代码,包括调用页面已有的 JS 对象、函数。
在里面输入 js 代码回车运行以后会运行 js 代码,同时打印出返回值
快捷命令
输入$_可以返回上一条语句输出的结果
输入$0 可以获得当前选中的 DOM 节点,$1 是上次,$2 是上上次
console 输出
代码中的 Console、异常错误都会在这里输出。
console 函数
用 console 函数输出变量,是比较常用的调试技巧,console 的常用函数:
console函数 | 说明 |
---|---|
console.log(str) | 控制台输出一条消息 |
console.error(str); | 打印一条错误信息,类似的还有 info、warn |
console.table(data [, columns]) | 将数据以表格的形式显示,很实用,data 为数组或对象,第二个参数(数组)可指定输出的列 |
console.dir(object) | 树形方式打印对象,特别是 DOM 对象非常实用 |
console.assert(false, ‘false’) | 断言输出,为 false 才会输出 |
console.trace() | 输出当前位置的执行堆栈,用断点会更实用一些。 |
console.time(label) | 计时器,可用来计算耗时(毫秒),三个函数配合使用:time(开始计时) > timeLog(计时) > timeEnd(结束) |
console.clear() | 清空控制台,并输出 Console was cleared。 |
监听函数
通过如下(调试工具)的全局函数可监听一个函数、事件的执行。
函数 | 说明 |
---|---|
monitor( function ) | 监听一个函数,当被监听函数执行的时候,会打印被调用信息 |
monitorEvents ( event ) | 监听一个事件,当事件被触发时打印触发事件日志 |
活动表达式
一个不错的小功能,点击下图中的眼睛图标,相当于添加了一个动态表达式,然后实时监控(显示)该表达式的值。
源代码面板(Sources)
管理网页所有的源代码文件,包括 JS、CSS、图片等资源,经常就是在这里断点调试 JS 代码
在调试模式下可以查看(鼠标悬浮在变量上)变量值、上下文作用域、函数调用堆栈信息。
- ① 页面资源目录:页面涉及的所有资源(树)。
- ② 源代码:文件源代码,可以在这里添加断点调试 JS 代码,如果想编辑在线 JS 代码,也是可以的,详见后文。
- ③ Debug 工具栏:断点调试的操作工具,可以控制暂停、继续、单步、执行代码。
- ④ 断点调试器:这里包含多个断点调试器(展示断点的信息)
- 监视(Watch):可添加对变量的监视。
- 断点(Breakpoints):所有添加的断点,可在这里编辑、删除管理。
- 作用域(Scope):当前代码上下文的作用域,含闭包。
- Local**本地作用域:代码当前 {} 内存在的变量,this**就可以在这里找到。
- **Closure****闭包作用域**:代码当前所处闭包里的变量。注意名称后用括号注明了这是哪个闭包里的内容,因为闭包可以嵌套,所以可能出现多个 Closure 作用域。
- **Script****代码标签作用域**:当前 标签里存在的变量,这个用的不多。
- Global 全局作用域:这个就不用解释了吧。
- 调用堆栈(Call Stack):当前函数的调用堆栈
如果我们利用框架的话,很有可能调试一个点击事件,就跳入了框架,但我们希望调试我们自己的代码,就可以修改调用堆栈
- XHR/提取断点:可以在这里添加对 AJAX 请求(XHR、Fetch)的断点,添加 URL 地址即可。
- DOM 断点:在元素页面添加的 DOM 断点会在这里显示。
- 事件监听器断点:我们可以勾选一些事件,当这些事件被触发的时候代码就会进入断点
debugger
在源代码中输入 debugger,但代码被运行时会被断点断住,右侧还会提示你是因为什么造成的断点
断点调试
如下图,在源代码行号位置添加断点。
- 添加断点(Add breakpoint):添加一个普通断点,最左侧行号处,点击添加断点,或者右键菜单。
也可以在 JS 代码中设置断点,关键字:debugger
debugger // 会在这里断点
console.log('debugger')
- 添加条件断点(Add conditional breakpoint):添加一个条件断点,符合条件断点才会生效,条件可使用当前代码上下文中的变量。
- 添加记录点(Add logpoint):添加一个日志打印,打印当前代码环境的变量,非常方便,不用在源码下添加 console 了。
调试线上代码:本地工作区
如果是线上的环境,能不能直接修改源代码(JS、CSS)调试呢?—— 可以的。思路就是创建本地的 JS 副本,页面加载本地的 JS 文件,就可以在本地 JS 文件上修改了。
① 创建本地工作目录:
- 如下图,源代码下面找到“覆盖(Override)”。
- 然后点击“选择替代文件夹”,添加一个本地空的文件夹,作为本地工作目录。
- 添加后要注意要确认授权。
② 创建源代码的本地副本:选择需要修改的源代码右键“保存以备替代”,就会在本地目录创建副本文件,网页使用本地的 JS 文件。
- 创建的本地副本,可以在“覆盖”下看到,也可以在本地文件夹下看到。
③ 编辑代码:该 JS 文件就可以直接在源代码中编辑修改了,实时生效。
- CSS、HTML、JavaScript 都支持。
- 可以在浏览器的源代码中修改,也可以本地其他工具中打开编辑。
网络面板(Network)
工具栏中两个比较实用的小功能:禁用缓存、模拟弱网环境。
点击请求的资源项,可以查看详细的请求、响应数据,常用于服务端接口的联调。
保留历史请求,刷新页面的时候不清空下面的请求
导入 har 与导出 har,可以从电脑上导出以后再在另一台电脑上还原当时的请求
还可以编辑参数,重新发起请求
切换 web 识别电脑系统
存储面板(Application)
这里最主要的是查看 LocalStorage、SessionStorag、Cookies
性能面板(Performance)
先录制,后分析,分析网络、CPU、内存、渲染 FPS 帧率,用于定位、解决页面性能问题。
性能监视器(Performance monitor)
面板可以实时的监控页面性能参数。
Lighthouse
这个就很厉害了,对页面进行综合分析,包括性能、PWA(Progressive Web App,渐进式 Web 应用)、SEO、无障碍访问等,分析完后产出报告,给出得分,还给出了页面改进建议。
不要用附着网页,而是单独窗口,使用的过程他会刷新页面
其他额外功能
这里可以查找更多工具
调试分层
跟堆叠上下文有关的属性会影响浏览器的分层决定
基础操作汇总
操作类型 | 快捷键/说明 |
---|---|
切换浏览器标签 | Ctrl+1 到 8 切换到对应序号的浏览器标签 |
浏览器全屏 | F11 |
打开调试模式 | F12,Ctrl + Shift + I (Windows) 页面右键菜单“检查”,浏览器菜单“开发者工具” |
切换调试工具位置(下面、右边) | ctrl + shift + D |
内容搜索查找 | Ctrl+F:元素、控制台、源代码、网络都支持搜索查找 |
使用命令 Command 面板 | Ctrl] + [Shift] + [P] 类似 VSCode 的命令面板,有大量的隐藏功能,可以在这里搜索使用 |
复制元素 | 元素面板:选中元素》Ctrl+C 元素面板:选中元素》右键菜单》复制元素 copy($0) 控制台中代码复制当前选中元素 |
控制台:全局 copy 方法 | 复制任何对象到剪切板,copy(window.location) |
控制台:保存堆栈信息( Stack trace ) | 报错信息可以右键另存为文件,保存完整堆栈信息 |
控制台:$、$$查询 Dom 元素 | - $ = document.querySelector - $$ = document.querySelectorAll |
Store as global(存储为全局变量) | 控制台(右键):把一个对象设置为全局变量,自动命名为 temp* 元素面板(右键):把一个元素设置全局变量,同上 |
元素:h 快速隐藏、显示该元素 | 选中元素,按下 h 快速隐藏、显示该元素。 |
元素:移动元素 | 鼠标拖动到任意位置 |
******Store as global(存储为全局变量)**:类似 copy 方法,将一个对象保存为全局变量,变量命名依次为 temp1、temp2。
******保存堆栈信息( Stack trace )**:错误堆栈信息另存为文件,保存完整堆栈信息。
******Command 面板**:同 VSCode 的命令面板,可以找到调试工具的所有的(隐藏)功能。Ctrl] + [Shift] + [P] (Mac: [⌘] + [Shift]+ [P])
- 设置主题:打开 Command 面板,搜索“主题”,可以切换多种主题
- 分析代码的覆盖率:打开 Command 面板,如下图搜索“覆盖”,分析首次页面加载过程中哪些代码执行了,那些没有执行,输出一个报告。
选择文件可进一步查看代码的使用分析,红色 = 尚未执行,青蓝色 = 至少执行了一次。
******元素截图**:输出指定元素的截图,包含隐藏滚动的内容,这个功能挺好用的。
- 通过 Command 面板:搜索“截图”,全屏截图、指定节点截图。
- 元素面板中,选中元素》右键菜单》“捕获节点屏幕截图”。