Chrome Dev Tools 是每一位前端工程师开发调试的必备利器,称之为FE的瑞士军刀也绝不为过。然而,往往当发现一些本身不知道的用法时,咱们常常会以为,本身只是掌握了其强大功能的九牛一毛。为了可以让她发挥出最大功效,首先,咱们应当了解她更多的使用方法;而后,在开发中合适的场景下,刻意练习使用;最后,熟练掌握那些以前不了解的功能,并为我所为用,最大提高效率。javascript
本文翻译自谷歌官方文档,主要介绍了Elements, Console, Sources, Network四个Tab页面下的功能。敬请期待
Chrome Dev Tools 性能篇
css
Cmd + Alt + c
inspect,点击想观察的节点inspect(DOM)
,DOM
为想观察的节点。F2
-> Edit as HTML. ctrl+enter
保存更改,Esc
退出更改,不保存.Enter
,而后Tab
选择.Edit/Add Attribute
.Scroll into view
,滚动页面使节点在视口中显示.断点调试html
break on
,能够对该节点的子树修改、属性修改、节点移除三种事件添加断点DOM Breakpoints
,管理DOM断点.右键
-> Show Function Definition
useCapture
的值(bool).Styles,位于面板左侧,主要是样式相关内容前端
Styles
中的文件名->跳转到Source->右键,Local Modifications.Inherited from <NODE>
,点击<NODE>
能够跳转到该DOM节点。.cls
,能够查看、增长、删除class。+
按钮,(选择要向哪个样式表)添加一个新的 CSS 规则。:hov
,或在元素上点击右键,启用/删除伪类。color
,background-color
等快捷方式。color
声明左侧带颜色的小正方形,打开color-picker
。Cmd + Alt + J
Shift + Enter
实现换行,而不会直接运行。clear()
/console.clear()
清空console.console.group("Group Name")
console.groupCollapsed("Group Name")//默认折叠
console.groupEnd()复制代码
console.time("name");
console.timeEnd("name");
// 向Timeline添加一个标记
console.timeStamp("Adding result");复制代码
console.assert(a < 500, "a > 500!");复制代码
// 追踪堆栈
try {
// some code here
} cache(e) {
console.log(e.stack);
}
// 打印跟踪调用栈
console.trace();
// 处理运行时异常
window.onerror = function(message, url, line){
console.log("window.onerror was invoked with message = " + message + ", url = " + url + ", line = " + line);
}复制代码
%s %d %f %o(DOM节点) %O(js对象) %c 样式
。不过有了ES6之后,推荐使用更加方便、灵活的模板字符串Profiles
面板中console.profile("label");
console.profileEnd();复制代码
其余特殊用法java
// DOM元素格式化为JS对象
console.dir(document.body);
// 输出object子级元素xml
console.dirxml(object);
// 将Object,Array输出
console.table([{a:1, b:2, c:3}, {a:"foo", b:false, c:undefined}]);
console.table([[1,2,3], [2,3,4]]);
console.table(family, ["firstName", "lastName", "age"]);
// 记录相同字符串传入的次数(多用于统计函数调用次数)
console.count("Login called for user " + user);复制代码
↑ / ↓切换查看表达式 web
选择元素chrome
$('code') // document.querySelector()
$$('figure') // document.querySelectorAll()
$x('html/body/p') // 返回与指定xpath匹配的数组元素
$0 - 4 // 返回最近访问过的5个元素,$0为最新的一个复制代码
监听事件, 查看时间监听器(Elements
->Event Listener
中也能够查看)数组
monitorEvents(document.body, "click"); // 监听事件
unmonitorEvents(document.body); // 取消监听
getEventListeners(document); // 返回在指定对象上注册的事件侦听器复制代码
复制:将指定对象的字符串表示形式复制到剪贴板.cookie
copy(object);
copy($0);复制代码
调试函数前端工程师
debug(fn); // 调用fn时开始调试
undebug(fn); // 中止调试
monitor(function); // console中将输出函数调用,以及传入的参数 unmonitor(function); // 中止监控复制代码
Elements
中打开指定元素/对象/函数.inspect(DOM);
inspect(object/function);复制代码
keys(object);
values(object);复制代码
Event
断点:Source标签
->右侧Event Listener Breakpoints
->Mouse
->click
DOM
断点.Elements 面板中,对DOM节点右键,Break On...XHR
断点Pause on exceptions
// 当DOM元素知足某个条件进行断点,同时查看这个元素
elem.hasAttribute('class') && inspect(elem);复制代码
continue to here
Watch
->+
,添加但愿检测的表达式,好比,a,typeof aScope
窗格,在脚本暂停时,会显示当前变量Deactivate breakpoints
,启动/忽略所有断点Call Stack
调用堆栈
Call Stack
中右键,Restart Frame
Async
,提升完整的异步函数调用堆栈的可视性Blackbox Script
Call Stack
中,右键->Blackbox Script
Settings
->Blockboxing
->add pattern
,下拉菜单中,Blackbox
黑箱,Disabled
阻止执行Cmd + s
,继续运行代码Threads
,切换线程Source Map
, Settings
中开启Snippets
编写代码,运行结果输出到console
DOMContentLoaded
事件,红线标志load
事件。Http1.0/1.1
下,chrome
最多支持对同一个domain
6个TCP
请求Capture Screenshots
,再次刷新页面时,能够在时间轴上方看到对应屏幕状态。disable cache
,throttle
,Offline
,hide data urls
clear browser cache
header
:Use large request rows
,Show overview
copy response
->console中copy({})
->获得格式化的JSONblock request
在drawer中,查看被block的requestXHR request
-> reply XHR
Summary
: request数量,大小,时间domain
,has-response-header
,is
(is:running),larger-than
,method
,mime-type
,mixed-content
,scheme
,set-cookie-domain
,set-cookie-name
,set-cookie-value
,status-code