JavaScript中Console有趣的用法

Console命令用来调试网页运行,在javascript开发调试时,我们会经常使用诸如console.log()命令来显示输出的信息。现代浏览器的控制台(一般按F12可呼出)console面板可以帮助我们更好的调试web网页脚本程序。

曾经,在很多的网站上我们会看到开发者隐藏在调试工具console里的招聘信息,来看百度首页的招聘信息,效果如下图(chrome浏览器):


 

本文将给大家介绍如何实现console命令输出格式化(带样式)、图片等信息,让console变得非常有趣。
基本用法
console.log的基本语法如下:
console.log(object [, object, …]);
//console.log('helloweba'); //输出:helloweba
占位符
天猫、知乎等网站的首页console里也有他们特有的招聘信息,当然这些招聘信息针对性很强,他说给web开发人员看的,更确切的对象应该是前端开发人员。
首先,我给大家说下占位符的事。浏览器提供了这么一个API:第一个参数可以包含一些格式占位符比如%c,console.log方法将依次用后面的参数替换占位符,然后再进行输出。熟悉PHP或者C程序的同学应该很了解占位符这个概念。
以下将占位符列表说明:
格式占位符 作用
%s 字符串
%d or %i 整数
%f 浮点数
%o 可展开的DOM
%O 列出DOM的属性
%c 根据提供的css样式格式化字符串
%o和%O在普通对象上的表现是一样的,但是在DOM上就有区别了:
// 格式成可展开的的DOM,像在开发者工具Element面板那样可展开
console.log('%o',document.body.firstElementChild);
// 像JS对象那样访问DOM元素,可查看DOM元素的属性
// 等同于console.dir(document.body.firstElementChild)
console.log('%O',document.body.firstElementChild);
随意打开的一个页面测试,firefox总是可以查看可展开的DOM节点,即行为是%o;IE不支持%o和%O ;chrome显示正常。
%c占位符是最常用的,使用%c占位符时,对应的后面的参数必须是CSS语句,用来对输出内容进行CSS渲染。于是,利用%c配合CSS可以做出吊炸天的效果,比如背景色、字体颜色渐变、字体3D效果、图片等,甚至可以是火星文、表情包等。
console.log("%cHelloweba欢迎您!","color: red; font-size: 20px");
//输出红色的、20px大小的字符串:Helloweba欢迎您!
不过要注意了:
console不能定义img,因此用背景图片代替。
console不支持width和height,利用空格和font-size代替;还可以使用padding和line-height代替宽高。
chrome不支持img啊!原因是ConsoleViewMessage.js源码把url和谐掉了。不过可以下载firebug插件查看啦~ gif图片也是支持的~~~
console是默认换行的。
字符画
在天猫和知乎的console面板里,我们还发现了有有趣的文字图形,那这个又是怎么实现的呢?
这个文字图形我们暂且把它叫做字符画。
那么他们这个看起来比较字符画是手打出来的吗?不是的,有神器可以将图片制作成ASCII字符画。
推荐大家2款在线的生成工具:
在线工具:picascii
在线工具:mg2txt
大概方法:使用在线工具生成字符画,然后复制到sublime中,将每行开头的换行删除,且替换成\n。最后只有一行代码,即保证没有换行,最后再丢到console.log("")代码中即可,当然,也可以添加结合%c做出更酷炫的效果。
兼容性问题
只有开发者工具打开的时候IE8/9才支持console;IE6/7不支持console且抛出错误。
%c以及%o、%O,IE不支持;而firefox的%o和%O的行为都支持%o。
%c的背景图展示目前只有firebug支持,chrome故意不支持。
链接的不同显示:chrome可点击跳转;火狐默认开发者工具的链接前面需要有一个空格隔开文本才可点击跳转,而firebug总是不可点击;IE不可点击跳转。

这里我把demo中的代码贴出来:

console.log("\n         :        .            i#:  i#.                                  ff                         \n        ##t      ##.           ##K  ##K                                  ##                         \n        ##f      ##            ##K  ##K                                  ##                         \n        ##f      ##            ##K  ##K                                  ##                         \n        ##t      ##            ##K  ##K                                  ##                         \n        ##:     :##    G###f   ##K  ##K   .E##E   ##   #D  L#.   ####    ######W      E###          \n        ##:    :G##   #######  ##K  ##K   ######  ##  ###  ##E i######i  ########   .######,        \n        ##D########  ###: t##  ##K  ##K  ###GD##t ##. ###  ##  ###  ###  ##K  ,##.  ###, ##         \n        ###########  ##  ####  ##K  ##K ,##   ### ##j;###;;## G## i###f  ##    W#K ###   ##         \n        ##t     :## j#####E    ##K  ##K K##   f## #####K#W##E ######i    ##    j## ##,   ##         \n        ##.     :## f###j      ##K  ##K D##   D## L####:####  ####       ##    ##E ##;   ##         \n        ##      :##  ##f   t#f ##K  ##K .##. .##i  ###G ####  E##.   W#  ##;  K##  ###   ##.        \n        ##      :##  W#######f ##K  ##K  #######   ###  ###K   ########  #######G  ;########        \n       .##       ##   i#####i  K#i  E#t   W####    G#W  f##    .E#####.  ######i    L####L##     ");
 
var str = "欢迎访问 http://www.111cn.net/ ,围观前端技术文章啦!\n关注微信公众号:%chellowebacom%c,不定期给您推送精选技术文章!\n";
 console.log("%c"+str+"\n%c    ","color: #6190e8;","padding: 0 5px;color: #fff;background: #6190e8;font-size:20px;","color: #6190e8;","background: url(http://www.111cn.net/attachments/hellowebawx.jpg) no-repeat left center;font-size: 100px;","\n\n");
运行后,打开console面板,效果如下图:

时间: 2024-08-02 20:34:25

JavaScript中Console有趣的用法的相关文章

详解JavaScript中循环控制语句的用法

  这篇文章主要介绍了详解JavaScript中循环控制语句的用法,包括break语句和continue语句的使用方法,需要的朋友可以参考下 JavaScript提供完全控制来处理循环和switch语句.可能有一种情况,当你需要退出一个循环,但未达到其底部.也可能有一种情况,当要跳过的码块的一部分,并直接开始下一个迭代. 为了处理这些情况下,JavaScript提供了break和continue语句.这些语句是用来马上退出任何循环或启动循环的下一次迭代. break 语句: break语句,这是

JavaScript中switch语句的用法详解

  这篇文章主要介绍了JavaScript中switch语句的用法详解,是JS入门学习中的基础知识,需要的朋友可以参考下 可以使用多个if... else if语句,如前面的章节,执行多路分支.然而,这并不总是最佳的解决方案,尤其是当所有分支的依赖单一的变量的值. 使用JavaScript1.2开始,你可以用它处理的正是这种情况,使用一个switch语句,它这样做更有效,如果不是反复地使用if... else if语句. 语法 switch语句的基本语法给出一个expression ,以评估计算

Javascript中For In语句用法实例

  本文实例讲述了Javascript中For In语句用法.分享给大家供大家参考.具体如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html;

JavaScript中return false的用法

这篇文章主要介绍了JavaScript中return false的用法,在大多数情况下,为事件处理函数返回false,可以防止默认的事件行为,需要的朋友可以参考下 在大多数情况下,为事件处理函数返回false,可以防止默认的事件行为. 例如,默认情况下点击一个元素,页面会跳转到该元素href属性指定的页. Return False 就相当于终止符,Return True 就相当于执行符.在js中return false的作用一般是用来取消默认动作的.比如你单击一个链接除了触发你的onclick事

javascript中match函数的用法小结

 本篇文章主要是对javascript中match函数的用法进行了详细的总结介绍,需要的朋友可以过来参考下,希望对大家有所帮助 javascript中的match函数是使用正则表达式对字符串进行查找,并将查找的结果作为数组返回,在实际开发中非常的有用,使用方法如下:  stringObj.match(rgExp)  其中stringObj是必选项.对其进行查找的 String 对象或字符串文字.  rgExp是必选项.为包含正则表达式模式和可用标志的正则表达式对象.也可以是包含正则表达式模式和可

JavaScript中的splice方法用法详解_javascript技巧

JavaScript中的splice主要用来对js中的数组进行操作,包括删除,添加,替换等. 注意:这种方法会改变原始数组!. 1.删除-用于删除元素,两个参数,第一个参数(要删除第一项的位置),第二个参数(要删除的项数) 2.插入-向数组指定位置插入任意项元素.三个参数,第一个参数(插入位置),第二个参数(0),第三个参数(插入的项) 3.替换-向数组指定位置插入任意项元素,同时删除任意数量的项,三个参数.第一个参数(起始位置),第二个参数(删除的项数),第三个参数(插入任意数量的项) 示例:

javascript中eval和with用法实例总结_javascript技巧

本文实例讲述了javascript中eval和with用法.分享给大家供大家参考,具体如下: 我们都知道javascript的作用域机制,但是with和eval有时会"破坏"我们对于作用域的常规理解.下面参考网上资源和自己理解总结一下eval和with的用法. 一.eval 1.eval函数:把一个字符串当作一个js表达式一样去执行它. 2.语法:eval(strScript) 注:参数strScript是必填项 3.使用说明 (1)它是有返回值的,如果参数字符串是一个表达式,就会返回

JavaScript中的标签语句用法分析_javascript技巧

本文实例分析了JavaScript中的标签语句用法.分享给大家供大家参考.具体分析如下: 最近在看w3school,然后看到js部分, <!DOCTYPE html> <html> <body> <script> cars=["BMW","Volvo","Saab","Ford"]; list: { document.write(cars[0] + "<br>

javascript中闭包概念与用法深入理解_javascript技巧

本文实例分析了javascript中闭包概念与用法.分享给大家供大家参考,具体如下: 1.问题的引出,什么时候会遇到闭包? 首先因为JS是没有块状作用域的,但是有函数作用域即函数作为了局部变量之间的界限,不同函数内的局部变量具有独立性, 因为JS没有块状作用域,笔者初学JS时,在事件的监听时,因为不理解JS中局部变量的作用域,犯过不少错误! (1)JS中的变量作用域 for(var i=0;i<9;i++) { } alert(i) //输出9 我们发现,虽然变量i是块状区域for()内的一个局