Chrome DevTools中的这些骚操作,你都知道吗?

ChromeDevTools调试技巧详解
本文介绍了Chrome开发者工具中的一些实用功能和调试技巧,如保留日志、代码覆盖率检测、显示重绘、检查动画、截图、使用LocalOverrides进行本地资源覆盖、全局搜索代码、设置事件监听器断点、DOM操作断点、异步请求断点、CSSOverview分析、CSP违规断点、新的字体编辑器工具、双屏模式以及完整的可访问性树视图等,帮助提升开发和调试效率。

目录

1. 保留日志

2. 代码覆盖率

3. 显示重绘

4. 检查动画

5. 截图

6. Local Overrides

7. 全局搜索代码

8. 事件监听器的断点

9. DOM 操作的断点

10. 异步请求的断点

11. CSS Overview

12. CSP 违规断点

13. 新的字体编辑器工具

14. 双屏模式

15. 完整的可访问性树视图

📚 参考资料


  

今天来分享 Chrome DevTools 中一些非常实用的功能和调试技巧!

1. 保留日志

当我们刷新完页面之后,通常控制台的 Console 面板就会被清空。如果想保留控制台的日志,就可以在设置中勾选 Preserve log 选项以保留控制台中的日志。

2. 代码覆盖率

我们可以打开设置,在Experiments中勾选Record coverage while performance tracing选项。

在面板下方的Coverage面板中点击红色按钮以记录页面的代码覆盖率:

3. 显示重绘

在浏览器的开发者工具中可以通过开启显示重绘选项以查看页面在执行操作时哪些元素会发生重绘。在控制台右上角三个点中的 More tools 选项中开启 Rendering 选项卡:

开启 Rendering(渲染)选项后,开启 Paint flashing

当刷新页面时,显示绿色的区域就是重新绘制区域。

4. 检查动画

Chrome 的开发者工具不仅可以调试样式,还可以调试动画,可以在控制台右上角三个点中的 More tools 选项中开启 Animations 选项卡:

当页面的动画执行时,就会在时间轨道上查看所有的动画,点击其中一个动画可以懂得执行过程以及时间轴:

我们可以在时间轴上定位到任一时刻的动画帧,也可以拖动左右两端的圆点来修改动画的延迟和周期,修改之后可以在属性面板看到对应的 CSS 样式。

5. 截图

Chrome 浏览器内置了截图功能,可以在浏览器开发者工具中使用 Ctrl+Shift+P(Windows)或者Command+Shift+P(Mac)快捷键打开搜索来查找screenshot

这里有四个选项:

  • 第一个:截取自选区域;

  • 第二个:截取整个网页;

  • 第三个:截取当前节点;

  • 第四个:截取当前屏幕。

截图完成后自动下载到下载目录,打开浏览器的下载框或本机的下载目录即可看到图片。

6. Local Overrides

chrome 65+版本的新功能,可以使用我们自己的本地资源覆盖网页所使用的资源,比如,可以使用本地 CSS 文件覆盖网页的css文件,修改样式。类似的,使用DevTools的工作区设置持久化,将本地的文件夹映射到网络,在 Chrome 开发者功能里面对 CSS 样式的修改,都会直接改动本地文件,页面重新加载,使用的资源也是本地资源,达到持久化的效果。

1. 创建一个文件夹以在本地添加替代内容;

2. 打开Sources > Overrides > Enable local Overrides,选择本地文件夹

3. 打开Elements,编辑样式,自动生成本地文件。

4. 返回Sources,检查文件,编辑更改。

该项可以自动修改除XHR异步请求的资源,下载的文件若未格式化,可以点左下角。

◼️ 详情可参考:Chrome Devtools 高级调试指南 | chrome 开发者工具 - local overrides

7. 全局搜索代码

Chrome浏览器为我们提供了全局搜索的概念,可以点击开发者工具右上角的三个点,点击Search选项,在Search面板中搜索所需关键字即可,点击搜索结果即可跳到对应文件的代码行:

8. 事件监听器的断点

有时应用会在用户发生交互时出现问题,这时我们就可以添加事件监听器添加断点来捕获这些事件以检查交互时的问题。可以在Source面板右侧的Event Listener Breakpoints中勾选相应的事件:

9. DOM 操作的断点

当页面的内容发生变化时,如果想要知道是哪些脚本影响了它,就可以给DOM设置断点。我们可以右键点击需要设置断点的DOM元素,在弹出的菜单中点击Break on以选择合适的断点。

可以看到,Break on中有三个选项:

  • Subtree Modifications:子节点(内容、属性)修改通知,常用在子节点内容发生变化后,来定位源码;

  • Attributes Modifications:当前节点的属性修改通知,常用在节点的 className 等属性被修改后,来定位源码了;

  • Node Removal:当前节点移动时通知,常用在节点被移除时,定位源码。

10. 异步请求的断点

XHR breakpoints 可以用于异步请求的断点,点击加号即可添加断点规则,输入请求 的 URL 地址(片段),会在请求地址包含对应字符串的异步请求发出的位置自动停止:

11. CSS Overview

在 Chrome 的管理面板中,开启 CSS Overview 面板之后,就可以查看当前网站的样式信息了,包括颜色信息、字体信息、媒体查询等。当我们需要优化页面的 CSS 时,这个功能就派上用场了。除此之外,还可以使用该功能方便地查看其他优秀网站的样式信息。

默认情况下,该面板是不开启的,可以通过以下步骤来开启此功能:

  1. 在任意页面打开 Chrome 浏览器的 DevTools;

  2. 单击更多选项 -> More tools -> CSS Overview

那该如何使用 CSS Overview 面板呢?很简单,只需要点击 Capture overview 按钮来生成页面的 CSS overview报告即可。如果想重新运行CSS Overview,只需点击左上角的清除图标,然后再点击 Capture overview 按钮即可。

CSS Overview 报告主要由五部分组成:

(1)Overview summary: 页面 CSS 的高级摘要

(2)Colors: 页面中的所有颜色。颜色按背景颜色、文本颜色等用途分组。它还显示了具有低对比度问题的文本。

每种颜色都是可点击的。我们可以单击它以获取使用该颜色的元素列表。将鼠标悬停在列表中的元素上就可以突出显示页面中对应的元素。单击列表中的元素就可以在“Elements”面板中打开该元素。

(3)Font info:字体信息, 页面中的所有字体及其出现,按不同的字体大小、字体粗细和行高分组。与颜色部分类似,可以单击以查看受影响元素的列表。

(4)Unused declarations: 未使用的声明,包含所有无效的样式,按原因分组。

(5)Media queries: 媒体查询,页面中定义的所有媒体查询,按出现次数最高的排序。单击可以查看受影响元素的列表。

12. CSP 违规断点

Chrome DevTools CSP 违规断点可以捕捉到与CSP违规有关的可能的异常,并在代码中指出这些异常。

启用该功能将为应用程序增加一个额外的安全层,减少跨站脚本(XSS)等漏洞。

那该如何启用该功能呢?可以通过以下步骤来开启此功能:

1. 在任意页面打开 Chrome 浏览器的 DevTools;

2. 点击右上角设置图标 -> 选中左侧 Experiments -> 勾选 Show CSP Violations view;

3. 重启浏览器的 DevTools;

4. 在 CSP Violations Breakpoints 下选择 Trusted Type Violations 即可。

当遇到有安全问题的代码时,Chrome DevTools 甚至会显示如何修复改问题。

13. 新的字体编辑器工具

Chrome DevTools 提供了一个实验性的字体编辑器工具,可以用来改变字体设置。可以用它来改变字体、大小、粗细、行高、字符间距,并实时看到变化。

那该如何启用该功能呢?可以通过以下步骤来开启此功能:

1. 在任意页面打开 Chrome 浏览器的 DevTools;

2. 点击右上角设置图标 -> 选中左侧 Experiments -> 勾选 Enable New Font Editor Tools within Styles Pane;

3. 重启浏览器的 DevTools;

4. 选择HTML元素,其中包括想改变的字体,点击字体图标即可。

14. 双屏模式

通过启用双屏模式,可以在 Chrome DevTools 模拟器的双屏设备上调试你的 web 应用。这对于开发要适配折叠屏手机的应用是非常有用的。

那该如何启用该功能呢?可以通过以下步骤来开启此功能:

1. 在任意页面打开 Chrome 浏览器的 DevTools;

2. 点击右上角设置图标 -> 选中左侧 Experiments -> 勾选 Emulation: Support dual-screen mode;

3. 重启浏览器的 DevTools;

4. ①切换到移动设备调试 -> ②选择一个双屏设备 -> ③点击上方的切换双屏模式。

15. 完整的可访问性树视图

通过 Chrome DevTools Accessibility Tree,可以检查为每个DOM元素创建的可访问性对象。这项功能与 Elements 选项卡相似,但使用它可以深入探索应用的更多可访问性细节。

那该如何启用该功能呢?可以通过以下步骤来开启此功能:

1. 在任意页面打开 Chrome 浏览器的 DevTools;

2. 点击右上角设置图标 -> 选中左侧 Experiments -> 勾选 Enable the Full accessibility tree view in the Elements pane;

3. 重启浏览器的 DevTools;

4. 在Elements面板中点击右上角的无障碍按钮,将元素视图模式切换为无障碍树视图。

📚 参考资料

Chrome开发者工具使用指南必须掌握的Chrome浏览器开发者工具十大操作 |

<think>我们正在讨论的是如何在Chrome DevTools中强制禁用CORS(跨域资源共享)限制。根据用户的问题,他之前已经得到了关于避免跨域预检请求的方法,现在特别关注如何在DevTools中禁用CORS。 注意:用户提供的引用[1]是关于Vue Devtools安装和使用的指南,其中提到了一些安全策略(如禁用开发者模式、CSP等),但并未直接涉及禁用CORS。因此,我们将主要基于已知的浏览器调试技巧来回答。 在Chrome DevTools中,并没有直接提供一个开关来禁用CORS。但是,我们可以通过以下几种方式在本地调试时绕过CORS限制: 1. 使用Chrome命令行启动参数:通过添加特定的命令行参数来启动Chrome,可以禁用Web安全策略,从而绕过CORS。 2. 使用浏览器扩展:安装专门用于禁用CORS的浏览器扩展(但注意扩展的安全性,参考用户提供的引用[1]中关于安全使用扩展的建议)。 3. 修改本地服务器响应头:在本地开发服务器中设置CORS响应头(如Access-Control-Allow-Origin: *),但这不属于在DevTools操作。 鉴于用户特别询问在Chrome DevTools中强制禁用CORS的方法,我们需要澄清:DevTools本身不提供禁用CORS的选项,但我们可以通过DevTools控制台临时关闭CORS(仅适用于某些场景)吗?实际上,控制台也无法直接关闭CORS。 因此,我们只能提供通过命令行启动Chrome的方法,这是最常用的方式。 具体步骤: 步骤1:关闭所有正在运行的Chrome实例。 步骤2:根据你的操作系统,使用命令行启动Chrome并添加参数: 对于Windows: ``` chrome.exe --disable-web-security --user-data-dir="C:\TempChrome" ``` 对于macOS: ``` open -n -a "Google Chrome" --args --disable-web-security --user-data-dir="/tmp/chrome_dev_test" ``` 对于Linux: ``` google-chrome --disable-web-security --user-data-dir="/tmp/chrome_dev_test" ``` 参数说明: - `--disable-web-security`:禁用同源策略,这将允许跨域请求。 - `--user-data-dir`:指定一个单独的临时用户数据目录,这样不会影响你正常的浏览器数据。注意:路径需要存在,如果不存在请先创建。 步骤3:使用这个新打开的Chrome窗口进行调试。在这个窗口内,CORS限制将被禁用。 重要警告: 这种方法只适用于本地开发和调试,绝对不要用于日常浏览,因为它会关闭重要的安全保护。 另外,用户引用的内容中提到了安全使用扩展的建议,如果我们使用扩展来禁用CORS,则需要注意扩展的来源可信。但这里我们并没有推荐具体的扩展,因为使用命令行参数的方式更直接且不需要安装额外扩展。 由于用户特别提到了“DevTools”,我们也可以说明一下:在DevTools中,我们无法直接禁用CORS,但是我们可以利用DevTools的“Local Overrides”功能覆盖服务器响应头,间接解决CORS问题。不过这种方法较为复杂,需要手动添加CORS响应头。 另一种在DevTools操作的方法是:在控制台中发送请求时,使用`fetch`并添加`no-cors`模式,但这只能用于获取不透明的响应(无法读取响应内容),所以通常不是调试的好方法。 因此,我们主要推荐使用命令行参数的方式。 相关问题: 1. 禁用Web安全策略会对浏览器安全造成哪些风险? 2. 除了命令行参数,还有哪些方法可以在本地开发中绕过CORS? 3. 如何在Chrome中创建多个独立的用户配置文件? 4. 如何通过修改响应头来解决CORS问题? 5. 使用`no-cors`模式获取资源有什么限制? 注意:用户之前的问题中已经提到过命令行参数的方法,现在他特别询问在DevTools中的方法,所以我们需要解释清楚在DevTools中没有直接的方法,但可以间接通过覆盖响应头来实现。 下面我们将介绍如何使用DevTools的Local Overrides功能来覆盖响应头: 步骤: 1. 在DevTools中打开Network面板。 2. 找到跨域请求,右键点击该请求,选择“Override headers”(如果没有,可能需要先设置Overrides)。 3. 在Overrides选项卡中,我们可以添加响应头,例如: - Access-Control-Allow-Origin: * - Access-Control-Allow-Methods: GET, POST, PUT, DELETE - Access-Control-Allow-Headers: * 4. 保存后刷新页面,这样浏览器就会使用我们覆盖的响应头,从而绕过CORS限制。 这种方法需要事先设置Overrides,并且只能覆盖我们已经捕获到的请求,但对于调试特定请求非常有用。 总结回答: 我们将提供两种主要方法: 方法一:使用命令行参数启动Chrome(推荐)。 方法二:使用DevTools的Local Overrides功能覆盖响应头(适用于单个请求的调试)。 同时,我们也会提到使用扩展的方法,但提醒用户注意扩展的安全风险。 </think>### 在 Chrome DevTools 中强制禁用 CORS 的方法 在 Chrome DevTools 中无法直接禁用 CORS,但可以通过以下两种关联方法实现跨域调试: #### 方法一:通过 Chrome 启动参数全局禁用 **此方法会影响整个浏览器**: 1. 关闭所有 Chrome 进程 2. 根据操作系统执行对应命令: ```bash # Windows chrome.exe --disable-web-security --user-data-dir="C:\TempChrome" # macOS open -n -a "Google Chrome" --args --disable-web-security --user-data-dir="/tmp/chrome_dev_test" # Linux google-chrome --disable-web-security --user-data-dir="/tmp/chrome_dev_test" ``` 3. 新窗口顶部会显示 `--disable-web-security` 警告 4. 在此窗口中使用 DevTools 调试时将忽略 CORS 限制 > ️ 警告:此模式会禁用所有安全策略,仅限本地调试使用[^1] #### 方法二:通过 DevTools 局部覆盖响应头 **针对单个请求的解决方案**: 1. 打开 DevTools → Network 面板 2. 右键点击目标请求 → Block request URL 3. 切换到 Sources → Overrides → 创建本地覆盖文件夹 4. 创建同名请求文件的响应头覆盖: ```json // 文件名: .headers [ { "applyTo": "*", "headers": [{ "name": "Access-Control-Allow-Origin", "value": "*" }] } ] ``` 5. 刷新页面,被阻止的请求将通过本地覆盖响应头绕过 CORS #### 补充方案:使用 DevTools 扩展 安装 CORS 控制类扩展(需严格审核来源): 1. 搜索 Chrome 商店:`CORS Unblock` 或 `Allow CORS` 2. 安装后通过扩展图标启用 3. 在 DevTools 中验证跨域请求 > 💡 优先推荐启动参数方案,扩展方案需警惕安全风险[^1] ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

儒雅的烤地瓜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值