Chrome 开发者工具使用技巧

最近我花了较多的时间使用 Chrome 的开发者工具。我发现了很多之前没用过的好功能 (或还不是特别需要用到的功能,例如 blackboxing 和 asynchronous stacktraces) 。因此我想对我非常喜欢的几个功能做个总结。

小小的放大镜图标告诉你有哪些 CSS 类/选择器 位于哪个 CSS 文件,决定了某个特殊元素的样式和 CSS 的属性。例如,在任意 DOM 元素上右击选择 “审查元素”,切换到 “Computed” 子菜单,可以查找你感兴趣的 CSS 属性并且点击放大镜可以直接定位到的 CSS 类/选择器在 .css 文件中的位置。 (当你开发新的大型 web app 项目的时候非常有用):

image

想看看当前的 web app 发送了什么 XHRs 请求,选中位于 “Settings” 下的 “Log XMLHttpRequests” 复选框 然后看看再看看控制台的选项卡。在我知道这个功能之前,我通常将浏览器设置为通过一个 HTTP 拦截代理 ,例如 Burp suite ,但是如果你仅仅需要快速回顾一下,那么这个功能还是很方便的。当然,通过拦截器代理你也可以有机会在到达服务器之前修改 XHRs,这对安全测试非常有帮助。 一个轻量的替代方法是使用 “Sources :: XHR Breakpoints” 并激活 “Any XHR” 断点。

image

现在,假定你的 web app 正周期性得发出一些 XHR 请求(例如保持当前页面始终是最新)并且你需要知道定时器是在哪里设置的(例如在哪里调用了 setTimeout() 或使用了 setInterval() )。要解决这个问题,切换到 “Sources” 选项卡,选中“Async” 复选框。 这样可以让栈追踪继续执行,越过 setTimeout() 和 friends, 甚至多个级别的嵌套。它对 requestAnimationFrame() 和 addEventListener() 等也有效。这个复选框在这里:

image

要快速找到当你点击一个按钮或一个链接被点击时候执行的代码,启动 “Event listener breakpoint” 的 Mouse :: Click (开发现有大型 web app 的又一个杀手锏):

image

当你使用 “Event listener breakpoint :: Mouse :: Click” ,可能在一些第三方的库里(例如jquery)就先结束了, 你需要在 debugger 里走几次才能到达“真正的” event handler。“blackbox” 第三方脚本是避免这个问题一个很棒的方法。在 blackboxed 脚本中 debugger 不会中断, 他会继续执行直到遇到一行不在blackboxed 文件中的代码。 在 callstack 你可以选择第三方的库右击选择 “Blackbox Script” 将其放入 blackbox。

image

通过文件名称跳转到某个特殊文件,可以使用 ctrl-p :

image

通过名称转到某个方法(仅限当前打开的文件)使用 ctrl-shift-p:

image

全局文件查找 ctrl-shift-f

image

选择某个单词然后按 ctrl-d 几次,来选中更多相关的变量。对重命名变量来说非常方便:

image

对于本地开发的网站,可以用开发工具来编辑文件和保存修改到磁盘。切换到 Sources 选项卡,右击 Sources 子选项卡然后选择 “Add Folder to Workspace” 然后选择本地项目目录。然后右击本地文件选择 “Map to Network Resource…”,然后选择对应的 “network” 文件即可。

image

其它好用的技巧

  • $0 控制台上会显示你在 elemet 选项卡上选中的元素

  • 测试 Xpath 表达式 使用 $x("//p")

推荐安装的两个chrome 扩展

外文来源:http://mo.github.io/2015/10/19/chrome-devtools.html


王铁手的博客
怀着一颗铁匠的心,凭借一双铁手,打造自己的人生。

怀着一颗铁匠的心,凭借一双铁手,打造自己的人生。

4.1k 声望
279 粉丝
0 条评论
推荐阅读
2021 总结 - 维护优化提升
很早就想自己DIY NAS了,今年自己搞了一台高性能的NAS,并在上面运行虚拟化的服务。因此卖掉了不再需要的矿渣蜗牛星际,UNBT ERX 路由器,3965U的软路由,HK1BOX电视盒子。

王铁手1阅读 1.7k

「彻底弄懂」this全面解析
当一个函数被调用时,会创建一个活动记录(有时候也称为执行上下文)。这个记录会包含函数在 哪里被调用(调用栈)、函数的调用方法、传入的参数等信息。this就是记录的其中一个属性,会在 函数执行的过程中用到...

wuwhs16阅读 1.8k

封面图
图解浏览器的多进程渲染机制
观察浏览器的任务管理器可以发现,打开浏览器的一个页面需要多个进程,包括浏览器进程、GPU 进程、网络进程、渲染进程等,有插件的话还会包括各种插件进程(Chrome 选项 -> 更多工具 -> 任务管理器)。

兰俊秋雨6阅读 768

前端性能指标
传统性能标准初始化阶段navigationStart:请求开始时间,返回 0unloadEventStart:等于用户代理程序开始前一个文档的卸载事件之前的时间unloadEventEnd:等于用户代理程序完成前一文档的卸载事件之后的时间redire...

散一群逗逼9阅读 928

封面图
使用浏览器录制屏幕
最近有一个录制屏幕的需求,类似于录制软件的操作教程给别人演示。在网上搜了一下录制屏幕,结果大多需要下载安装,而且有收费或者广告。无意间找到一个使用浏览器在线录屏的网站,出于好奇,研究了一下实现的方...

来了老弟5阅读 1.8k评论 10

封面图
Chrome 103支持使用本地字体,纯前端导出PDF优化
在前端导出PDF,解决中文乱码一直是一个头疼的问题。要解决这个问题,需要将ttf等字体文件内容注册到页面PDF生成器中。但是之前网页是没有权限直接获取客户机器字体文件,这时就需要从服务器下载字体文件或者提示...

葡萄城技术团队3阅读 13.9k

伪数组(ArrayLike)
伪数组(ArrayLike)伪数组的定义和特性伪数组 (ArrayLike) ,又称类数组。是一个类似数组的对象,但是有如下几个特征。按索引方式储存数据0: xxx, 1: xxx, 2: xxx...具有length属性但是length属性不是动态的,不会...

OceanZH7阅读 10.5k评论 3

怀着一颗铁匠的心,凭借一双铁手,打造自己的人生。

4.1k 声望
279 粉丝
宣传栏