控制台接收信息转发_Chrome 控制台不完全指南(转)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处
作者:刘哇勇
链接: https://www. cnblogs.com/Wayou/p/chr ome-console-tips-and-tricks.html
来源:博客园
Chrome的开发者工具已经强大到没朋友的地步了,特别是其功能丰富界面友好的console,使用得当可以有如下功效:
- 更高「逼格」更快「开发调试」更强「进阶级的Frontender」
- Bug无处遁形「Console大法好」
console.log
大家都会用log,但鲜有人很好地利用console.error
, console.warn
等将输出到控制台的信息进行分类整理。
他们功能区别不大,意义在于将输出到控制台的信息进行归类,或者说让它们更语义化。
各个所代表的语义如下:
console.log
:普通信息console.info
:提示类信息console.error
:错误信息console.warn
:警示信息
当合理使用上述log方法后,可以很方便地在控制台选择查看特定类型的信息。
console.log('一颗红心向太阳','吼吼~');
console.info('楼上药不能停!');
console.warn('楼上嘴太贱!');
console.error('楼上关你毛事?');
如果再配合console.group
与console.groupEnd
,可以将这种分类管理的思想发挥到极致。这适合于在开发一个规模很大模块很多很复杂的Web APP时,将各自的log信息分组到以各自命名空间为名称的组里面。
console.group("app.foo");
console.log("来自foo模块的信息 blah blah blah...");
console.groupEnd();
console.group("app.bar");
console.log("来自bar模块的信息 blah blah blah...");
console.groupEnd();
而关于console.log
,早已被玩儿坏了。一切都源于Chrome提供了这么一个API:第一个参数可以包含一些格式化的指令比如%c
。
比如给hello world
做件漂亮的嫁衣再拉出来见人:
console.log('%chello world','font-size:25px;color:red;');
如果你觉得不够过瘾,那就把你能写出来的最华丽的CSS样式都应用上吧,比如渐变。于是你可以得到如下华丽丽的效果:
console.log('%chello world', 'background-image:-webkit-gradient( linear, left top, right top, color-stop(0, #f22), color-stop(0.15, #f2f), color-stop(0.3, #22f), color-stop(0.45, #2ff), color-stop(0.6, #2f2),color-stop(0.75, #2f2), color-stop(0.9, #ff2), color-stop(1, #f22) );color:transparent;-webkit-background-clip: text;font-size:5em;');
各种招大招的节奏啊~
看着上面密集的代码不用惊慌,上面console.log()
第二个参数全是纯CSS用来控制样式的,你不会陌生。而第一个参数里可以带用百分号开头的转义指令,如上面输出带样式的文字时使用的%c
指令。更详细的指令参见官方API文档的这个表格。
如果还不够过瘾,那咱们来log一些图片吧,甚至。。。动图?
对,你得先有图,我们拿这张图为例。
console.log("%c", "padding:50px 300px;line-height:120px;background:url('http://wayou.github.io/2014/09/10/chrome-console-tips-and-tricks/rabbit.gif') no-repeat;");
看着上面摇摆的豆比兔是不是有种抽它一脸的冲动。
除此,console.table
更是直接以表格的形式将数据输出,不能赞得太多!
借用之前写过的一篇博文里的例子:
var data = [{'品名': '杜雷斯', '数量': 4}, {'品名': '冈本', '数量': 3}];
console.table(data);
另外,console.log()
接收不定参数,参数间用逗号分隔,最终会输出会将它们以空白字符连接。
console.log('%c你好','color:red;','小明','你知道小红被妈妈打了么');
console.assert
当你想代码满足某些条件时才输出信息到控制台,那么你大可不必写if
或者三元表达式来达到目的,cosole.assert
便是这样场景下一种很好的工具,它会先对传入的表达式进行断言,只有表达式为假时才输出相应信息到控制台。
var isDebug=false;
console.assert(isDebug,'开发中的log信息。。。');
console.count
除了条件输出的场景,还有常见的场景是计数。
当你想统计某段代码执行了多少次时也大可不必自己去写相关逻辑,内置的console.count
可以很地胜任这样的任务。
function foo(){//其他函数逻辑blah blah。。。console.count('foo 被执行的次数:');
}
foo();
foo();
foo();
console.dir
将DOM结点以JavaScript对象的形式输出到控制台
而console.log
是直接将该DOM结点以DOM树的结构进行输出,与在元素审查时看到的结构是一致的。不同的展现形式,同样的优雅,各种体位任君选择反正就是方便与体贴。
console.dir(document.body);
console.log(document.body);
console.time & console.timeEnd
输出一些调试信息是控制台最常用的功能,当然,它的功能远不止于此。当做一些性能测试时,同样可以在这里很方便地进行。
比如需要考量一段代码执行的耗时情况时,可以用console.time
与 console.timeEnd
来做此事。
这里借用官方文档的例子:
console.time("Array initialize");
var array= new Array(1000000);
for (var i = array.length - 1; i >= 0; i--) {array[i] = new Object();
};
console.timeEnd("Array initialize");
当然,我们也可以选择自己写代码来计时:
var start=new Date().getTime();
var array= new Array(1000000);
for (var i = array.length - 1; i >= 0; i--) {array[i] = new Object();
};
console.log(new Date().getTime()-start);
相信你也看到了,用内置的console.time
是多么地方便,省去了自己写代码来计算的工作量。另外值得一提的是,通过调用内置的console.time
得到的结果要比自己手动计算的时间差更精确可靠。
console.profile & console.timeLime
当想要查看CPU使用相关的信息时,可以使用console.profile
配合 console.profileEnd
来完成这个需求。
这一功能可以通过UI界面来完成,Chrome 开发者工具里面有个tab便是Profile
。
与此类似的功能还有console.timeLine
配合 console.timeLineEnd
,它的作用是开始记录一段时间轴,同样可以通过Chrome开发者工具里的Timeline
标签来进行相应操作。
所以在我看来这两个方法有点鸡肋,因为都可以通过操作界面来完成。但至少他提供了一种命令行方式的交互,还是多了种姿势供选择吧。
console.trace
堆栈跟踪相关的调试可以使用console.trace
。这个同样可以通过UI界面完成。当代码被打断点后,可以在Call Stack
面板中查看相关堆栈信息。
上面介绍的都是挂在window.console
这个对象下面的方法,统称为Console API,接下来的这些方法确切地说应该叫命令,是Chrome内置提供,在控制台中使用的,他们统称为Command Line API。
$
似乎美刀总是被程序员及各种编程语言所青睐「你看看PHP代码就知道PHPer有多爱钱了」,在Chrome的控制台里,$用处还真是蛮多且方便的。$_
命令返回最近一次表达式执行的结果,功能跟按向上的方向键再回车是一样的,但它可以做为一个变量使用在你接下来的表达式中:
2+2//回车,再
$_+1//回车得5
上面的$_
需要领悟其奥义才能使用得当,而$0~$4则代表了最近5个你选择过的DOM节点。
什么意思?在页面右击选择审查元素
,然后在弹出来的DOM结点树上面随便点选,这些被点过的节点会被记录下来,而$0
会返回最近一次点选的DOM结点,以此类推,$1返回的是上上次点选的DOM节点,最多保存了5个,如果不够5个,则返回undefined
。
另外值得一赞的是,Chrome 控制台中原生支持类jQuery的选择器,也就是说你可以用$
加上熟悉的css选择器来选择DOM节点,多么滴熟悉。
$('body')
$(selector)返回的是满足选择条件的首个DOM元素。
剥去她伪善的外衣,其实$(selector)
是原生JavaScript document.querySelector()
的封装。
同时另一个命令$$(selector)
返回的是所有满足选择条件的元素的一个集合,是对document.querySelectorAll()
的封装。
$$('div')
copy
通过此命令可以将在控制台获取到的内容复制到剪贴板。
copy(document.body)
然后你就可以到处粘了:
看完此条命令行,机智的你是不是跟脑洞全开的我一样,冒出了这样一个想法:那就是通过这个命令可以在JavaScript里进行复制操作从而不用依赖Flash插件了。
But现实是残酷的,如之前所述的,这里的控制台命令只能在控制台中环境中执行,因为他不依附于任何全局变量比如window
,所以其实在JS代码里是访问不了这个copy
方法的,所以从代码层面来调用复制功能也就无从谈起。但愿有天浏览器会提供相应的JS实现吧~
keys & values
这是一对基友。前者返回传入对象所有属性名组成的数据,后者返回所有属性值组成的数组。具体请看下面的例子:
var tboy={name:'wayou',gender:'unknown',hobby:'opposite to the gender'};
keys(tboy);
values(tboy);
monitor & unmonitor
monitor(function),它接收一个函数名作为参数,比如function a
,每次a
被执行了,都会在控制台输出一条信息,里面包含了函数的名称a
及执行时所传入的参数。
而unmonitor(function)便是用来停止这一监听。
function sayHello(name){alert('hello,'+name);
}
monitor(sayHello);
sayHello('wayou');
unmonitor(sayHello);
sayHello('wayou');
debug & undebug
debug同样也是接收一个函数名作为参数。当该函数执行时自动断下来以供调试,类似于在该函数的入口处打了个断点,可以通过debugger来做到,同时也可以通过在Chrome开发者工具里找到相应源码然后手动打断点。
而undebug
则是解除该断点。
而其他还有好些命令则让人没有说的欲望,因为好些都可以通过Chrome开发者工具的UI界面来操作并且比用在控制台输入要方便。
控制台接收信息转发_Chrome 控制台不完全指南(转)相关推荐
- 控制台接收信息转发_微信语音信息无法转发?原来这才是正确的转发姿势,看完涨知识了...
平常我们在使用微信的时候一定会发现一个小问题,那就是无论是发送出去的语音还是接收到的语音信息,都无法转发给别人.那么微信语音真的不支持转发吗? 笔者尝试了一下平常使用的消息转发,将语音消息进行转发后出 ...
- Java——接收用户在控制台的信息,将取到的信息写入lianxi.txt文件中,并且将lianxi.txt内容复制到home.txt中
一.题目 接收用户在控制台的信息,将取到的信息写入lianxi.txt文件中,并且将lianxi.txt内容复制到home.txt中 二.实现代码 package day08;import java. ...
- 【JavaScript学习笔记2】JS中常见的输出方式-控制台输出信息
引言 在编程开发的过程中,输出信息是非常必要的.JS中提供了四种输出方式:弹出显示框.控制台输出.弹出输入框.弹出判断显示框 弹出显示框 这种方式在上一篇笔记中已经详细介绍,有需要学习的朋友可以跳转到 ...
- java控制台计算数字_java从控制台接收一个数字
//时间:2017/7/22 //作者:江骆 //功能:从控制台接收一个数 import java.io.*; //引入一个IO流的包 public class helloworld1 { publ ...
- ssm idea后端接收数据输出在控制台时出现中文乱码
idea 后端接收数据输出在控制台时出现中文乱码 环境 maven项目, ssm框架(spring+springmvc+mybatis)注解和配置文件混合开发, tomcat服务器 解决乱码的方式(推 ...
- ElasticSearch5.3插件开发(一)控制台打印信息
自定义插件类继承org.elasticsearch.plugins.Plugin 本文最简单的一个插件,在控制台打印信息: package es.plugins; import org.elastic ...
- csgo控制台服务器信息,《csgo》国服控制台怎么打开 控制台指令设置方法
导 读 控制台可以帮助玩家实现练枪.测试等方便的功能,玩家可以开启控制台输入代码来获得想要的功能,但是还有很多玩家不清楚国服控制台怎么打开,下面就来分享一下csgo国服控制台开启方法. csgo国服控 ...
- EasyX接收并显示从控制台输入的数字和英文
EasyX如何接收并显示从控制台输入的数字和英文 自学EasyX,由于Easyx绘图库里执行不了cin和cout函数,无法通过此方法实现从控制台显示输入的数字和英文 对这个问题困扰很久找不到其他易懂的 ...
- 仿百度浏览器控制台打印信息
在百度搜索页面打开浏览器控制台(F12),看到这么一段提示文字信息. 感觉挺有趣的,它是如何实现的呢?一起动手实践一下吧. 目录 一.预览效果 二.程序代码 一.预览效果 二.程序代码 <!DO ...
最新文章
- OpenCV4Android开发实录(2): 使用OpenCV3.4.1库实现人脸检测
- html复选框多行排列布局
- 变量不同作用域的测试
- 第13届年度Webby奖采用Silverlight / 13th Annual Webby Awards powered by Silverlight
- Entity Framework加载相关实体——Explicit Loading
- numpy中方法参数axis取值理解
- swag您的装置不支持_新品发布---微机保护装置
- cf修复服务器,CF:“卡顿”问题终于得到重视!新版本宣布修复,玩家这下开心了...
- 兰州大学c语言课程作业答案,2016兰州大学C语言程序设计课程作业1附答案.doc
- 解决服务器被黑上不了网的问题
- MongoDB几个完整的库表设计实例
- shell编程基础(二)
- LeetCode69 Sqrt(x)**
- 数据库SQL优化大总结1之- 百万级数据库优化方案
- linux下制作dos启动u盘启动,在Linux系统下创建FreeDOS可启动U盘
- windows应用商店打不开,错误代码0x80131500
- 【NLP】电影评论情感分析(基础篇)
- C++中的PIMPL和NVI
- HTML图片映射矩形坐标,HTML图片热区map area的用法(转载)
- 蚂蚁金服Java岗内推,quartz定时器的处理
热门文章
- windows搭建邮箱服务器分享长期有效
- 安卓开发论坛!阿里P8架构师的Android大厂面试题总结,附赠课程+题库
- 2020清北学堂秋季营感想——Hoarfrost
- 线性代数 --- 投影Projection 一(投影向量p)
- 怎样消掉计算机桌面阴影,电脑桌面图标有蓝色阴影是怎么回事?怎么把它去掉...
- python 树结构 sql_sqlserver 树结构递归(向上递归和向下递归)
- python之__len__()
- 网上投票作弊的技术实现(纯技术交流,勿用作他途!!)
- 2003打不开计算机管理,win10系统打不开word2003的修复教程
- 迷宫问题用‘图’求解