最近我用 Chrome 开发者工具的时间比平时多了不少。我发现了几个不错的功能,之前忽略了它们(或者至少没有足够的深入探究;比如,blackboxing 和异步堆栈跟踪)。基于以上原因,我想总结一下这款开发工具中我喜欢的几个特性。
-
这个小的放大镜图标显示了是在哪个 CSS 文件中的哪个 CSS 类/选择器最终决定了这个特定元素的样式和 CSS 属性。比如,可以在任意
DOM 元素中选择 “inspect” ,然后选择右边的 “Computed” 子菜单。找到你想要选择的 CSS
属性,单击放大镜图标直接显示出在哪一个 .css 文件中的 CSS 类/选择器规定了该属性(如果你刚开始接触一个大型的 web
应用,这个特性非常有用):
-
想要查看 web 应用发送的 XHRs,你可以在 “Settings” 下勾选 “Log XMLHttpRequests”
,然后打开控制台页面就可以查看了。在我知道这一点之前,我需要设置我的浏览器通过类似 Burp 组件的 HTTP
拦截代理,但是如果你只需要一个快速的预览,现在这种方式就方便多了。当然,如果使用拦截代理,你就有机会在 XHRs
发送到服务器之前去修改它,这对于安全测试是非常有用的。一个轻量级的替换方案是去查看 “Sources :: XHR Breakpoints”
,并且选中激活 “Any XHR” 为断点。
-
现在,假设你的 web 应用正在定时请求 XHR (比如,保持当前视图是最新的),你想知道这个定时器是在哪儿设置的(即在哪里调用了
settimeout()
或 setinterval()
)。你可以切换到 “Sources” 标签页,并选中 “Async” 复选框,就能够看到结果了。这将使所有的堆栈路径不断深入 settimeout()
和同层方法,甚至多层深度的调用。同样的,requestAnimationFrame()
和 addEventListener()
等方法也有类似的选项。你可以在这里找到那个复选框:
-
如果你想单击了某个按钮或者链接后快速定位正在运行的代码,可以在单击这个按钮之前选中 “Event listener breakpoint” 下的 Mouse(鼠标)下的 Click (单击)事件(当你开始接触一个大型 web 应用时的另一个杀手锏):
-
当你使用 “Event listener breakpoint :: Mouse :: Click” 功能时,可能一开始会跳转到想
jQuery 这样的第三方库代码中,所以你不得不在调试器中跳过几步,才能找到 “真正”
的处理事件的代码。为了避免这个问题,可以把第三方的脚本放到 “黑匣子”
里面去。调试器不会在运行黑匣子里的代码时停下来,它会运行下去直到遇到不在黑匣子里的代码才中断。右击第三方库的文件名,在弹出菜单中选中
“Blackbox Script” ,就可以把脚本放入黑匣子中了:
-
使用快捷键
ctrl-p
,可以根据文件名快速打开文件(和在 atom 中一样):
-
使用快捷键
ctrl-shift-p
,可以根据函数名快速定位函数(但是仅限在打开的文件中):
-
使用快捷键
ctrl-shift-f
可以搜索全部文件:
-
你可以选择一个词然后按
ctrl-d
几次选择那个词,多个游标同时选中这些词,你可以一起编辑它们(也像在 atom 中一样)。在重命名变量的时候非常有用:
-
当运行一个本地储存的网站,应该可以在工具中编辑文件并将更改直接保存到磁盘。要做到这一点,切换到源选项卡,右击 “Sources”
选项卡,然后选择 “添加文件夹到工作区” ,最后选择你存放项目的本地文件夹。之后,右击你网站上的一些文件的本地副本,并选择 “映射到网络资源…”
,然后选择相应的 “网络” 文件:
一些其他的小技巧:
-
在控制台输入 $0
可以返回你在元素视图中选中的元素。
-
你可以使用
$x("//p")
测试 XPath 表达式(如果你写的 selenium 测试用例或者 CSS 选择器总是不能正确执行,这个就能派上用场了)。
我还要推荐你安装两个 Chrome 扩展程序: