以前写过前端答疑-chrome开发者工具正确食用-看网页源码,其中涉及到了 Sources
和 Network
两个标签。css
未曾想如今的世界愈来愈看不懂了
昨天吧,一个朋友忽然联系我了(应该是校友吧,不过我没见过本人,大我十届?我也是奔三的人了,忽然好难过)。
问我360 浏览器如何调试 js。这个时候应该配图了[黑人问号脸]。调试应该是每一个开发必会的技能吧,即便不会,难道没有网络吗?网上连教程都没有吗?html
那么好了,基于上面的吐槽,咱们开始今天内容。前端
log 是一个开发利器。 hello world 大概就是咱们的每一个人的第一条 log。vue
java system.out.println('hello world')
python print('hello world')
js console.log('hello world')
固然,有的时候咱们会使用 alert 来打。这里推荐一下 fundebug,一行代码搞定BUG监控,也能够打log,有一部分的免费额度。java
F12 或者 Control+Shift+i(PC平台)/ Alt+Command+i(Mac平台)打开咱们的控制台python
JavaScript 原生中默认是没有 Console 对象。是宿主对象提供的,也就是说console 是浏览器提供的内置对象。
用于访问调试控制台, 在不一样的浏览器里效果可能不一样。
IE低版本没有(固然你装了高版本,而后打开控制台他又能用console了)。ajax
提供了日志级别api。能够方便咱们根据类型,更快的定位须要关注的问题。算法
console.log('普通-文本')
与console.dir('普通-对象')
console.info('信息')
console.log 的别名,输出信息,部分浏览器会增长一个蓝色标志。console.warn('警告')
黄色警告标识,也有堆栈信息。console.error('错误')
输出信息时,在最前面加一个红色的叉,表示出错,同时会显示错误发生的堆栈。console.debug('调试')
从 Chromium 58 开始,Chromium 浏览器只有勾选了控制台中的 “Verbose” 日志级别才可见。支持多种写法chrome
console.log('auther:', 'lilnong.top')
console.log('auther:%s', 'lilnong.top')
console.log('%cauther:%s', "color: red; font-size: 20px",'lilnong.top');
更适合封装起来使用。console.assert(location.protocol=='https:', "https防止劫持哦~")
接受两个参数,第一个参数是表达式,第二个参数是字符串。只有当第一个参数为false,才会输出第二个参数,不然不会有任何结果。console.clear()
清除当前控制台的全部输出。console.count('count')
提供计数功能。好比说有个排序算法,咱们想统计时间复杂度。Console.countReset()
咱们也能够重置指定标签的计数器值。console.group('第一层');console.groupEnd();
提供将显示的信息分组功能,能够把信息进行折叠和展开。console.groupCollapsed('第一层');console.groupEnd();
同上,不一样点是默认是折叠状态console.table(arr);
提供将复合类型的数据转为表格显示。还能够进行排序等操做。console.time('task');console.timeEnd('task');
提供了统计代码执行用时的功能。不许,波动会比较奇怪,多统计,而后求平均值吧console.trace();
追踪函数的调用过程,也能够理解为把打印堆栈。上面介绍了API。接下来咱们介绍一下面板的使用。segmentfault
控制的是,级别筛选栏的隐藏与显示。
user messages 是指全部用户日志,浏览器产生的不算。以下,产生的错误就不算
document.body.addEventListener('touchmove', (e)=>e.preventDefault()) // VM275:1 [Intervention] Unable to preventDefault inside passive event listener due to target being treated as passive. See https://www.chromestatus.com/features/5093566007214080
ctrl+l
对应的命令是 console.clear();
设置功能,里面是一些控制开关。
相关的应该只有debugger
了吧。
当控制台是打开状态,走到debugger
会进入调试模式。反之没打开控制台,不会进入调试模式。
测试地址,为何会有 ajax 的 debugger 测试呢?由于问个人那我的,说兼听不到ajax的。
这里介绍两部分 代码区和调试工具区
以下图所示,能够看到咱们当前程序的代码。
在左边行数显示的位置咱们能够直接打断点,也能够右键,执行更多断点操做
debugger
也不会执行断点。经常使用于一些开源类库,打断点不但愿跳入到里面。下面咱们介绍一下每一个按钮的功能
工具栏介绍完了,咱们看一下其余区域
subtree modified
、Node removed
、attribute modified
左边部分是咱们的DOM树,通常来讲看看层级。具体找DOM的活,咱们都是在对应的元素上右键-检查。
右边部分是咱们当前DOM的css相关,通常来讲能够在这边改改样式,看看效果。支持键盘上下切换当前值。
还有一些便捷操做的控件
preserve log
该功能为长日志功能,正常来讲看到的都是当前页面的。
若是跳转页面或者说刷新以后就没了。经过打开 preserve log
,咱们能够长久的保留内容。
那它有什么做用呢?
disable cache
前端缓存也是比较麻烦的一个事情。常常须要强刷,清缓存一顿的操做。
当咱们打开 disable cache
以后,咱们就不须要关了,每次都是无缓存的加载
offline
好比说在测试 PWA
。或者说弱网的状况下的一种快速配置。
请求比较多的页面,咱们有可能须要过滤。
工具栏提供了,路径过滤(支持正则),类型过滤(All,XHR,js),
其实很简单啊,找到页面的请求,而后看 response
里面不就是吗?
这个其实也是昨天碰到的,有个朋友说他下载文件失败。我打开看到他response
的header
的Content-Disposition
写错了。
能够查看对应数据,更改对应数据,还能够清空。