本文仅先给使用console调试的FE同学,假设你还不知道console是什么。或者还停留在alert阶段,那就不要浪费时间了,say bay bay!

你是否试程序的过程中用过console.log(***),发如今现代浏览器里执行好好的,到了ie里却出现莫名其妙的错误,你全然不知道为什么。

或者你知道在ie下console不能使用。每次上线前都要凝视掉console的代码,一不小心漏掉了一个。

假设有过上面类似的情况,和我有着相同的烦恼,那恭喜你。console.js就是为你准备的。(假设你用着很牛逼的自己主动化工具,能自己主动过滤掉console的话,往下看下也是会有收获的)

你还在写类似以下这种代码吗?

if (console && console.log) {
console.log(***);
}

或者

console.log = console.log || function () {}

那么是时候做出改变了,console.js会帮你解决这些问题。

console.js是什么

console.js是一个微型js库。用来修复在不支持或部分支持console的浏览器下,调用console.***出错的问题。

这事实上有点类似reset.css或者html5shim的做法,console.js參考了MSDN MDN Firebug三个文档对console的介绍。

是当中提到api的超集。

console.js的所有代码例如以下。这么简单的代码,还是老规矩不解释:

;(function(g) {
'use strict';
var _console = g.console || {};
var methods = ['assert', 'clear', 'count', 'debug', 'dir', 'dirxml', 'exception', 'error', 'group', 'groupCollapsed', 'groupEnd', 'info', 'log', 'profile', 'profileEnd', 'table', 'time', 'timeEnd', 'timeStamp', 'trace', 'warn']; var console = {version: '0.1.0'};
var key;
for(var i = 0, len = methods.length; i < len; i++) {
key = methods[i];
console[key] = function (key) {
return function () {
if (typeof _console[key] === 'undefined') {
return 0;
} Function.prototype.apply.call(_console[key], _console, arguments);
};
}(key);
} g.console = console;
}(window));

小贴士:你知道最前面的分号是干嘛用的吗?

事实上是为了防止自己主动化工具拼接js时。前面的js的结尾处忘记了加分号,然后拼接出来的代码就挂了。

属于防御式编程。

比如a.js和b.js代码例如以下:

a.js

(function () {
//...
}())

b.js

(function () {
//...
}());

上面的代码被合后就会变为

(function () {
//...
}())
(function () {
//...
}());

这段代码运行时就会报错了。穿插一个小知识点,太小了。无法自成文章。

很多其它信息请參考console.js的文档

仅此而已了吗?

我一直在思考还能够做哪些改进,或者功能,仅此而已了吗?当然不是,我能想到的还能够做以下的一些改进。

添加一个对原始console的訪问接口,类似jq的noConflict,或者在如今的console上加一个对原来console的引用。

添加对域名的过滤功能,比方我们可能仅仅希望log信息在调试的时候输出,而在线上时不做输出。

眼下对不支持的接口仅简单赋值为空函数,可考虑对不支持的接口做模拟。对不支持console功能的浏览器,提供自己定义模拟console。

当然这些功能是否应该增加console.js,是个问题。应该思考下,console.js的初衷是什么。。。

不足

对于ie8 9浏览器。在首次打开控制台时。会新建console对象,如今console.js,尽在页面加载时做修复,无法解决问题。

但对于打开控制台的人,绝大多数应该不属于用户吧。

($ _ $)

总结

console.js 与console就想html5shim于html5,仅此而已,如此简单。

github地址:https://github.com/yanhaijing/console.js

给你的站点加入 console.js的更多相关文章

  1. 给你的网站添加 console.js

    本文仅先给使用console调试的FE同学,如果你还不知道console是什么,或者还停留在alert阶段,那就不要浪费时间了,say bay bay! 你是否试程序的过程中用过console.log ...

  2. console.js还有浏览器不支持?

    今天看到项目中引入了一个插件,我超级惊讶 为什么引入console.js啊? 这个是插件的源码:https://github.com/yanhaijing/console.js 我搜到源作者对这个插件 ...

  3. CefSharp F12打开DevTools查看console js和c#方法互相调用

    转载地址: https://www.cnblogs.com/lonelyxmas/p/11010018.html winform嵌入chrome浏览器,修改项目属性 生成 平台为x86 1.nuget ...

  4. chrome console js多行输入

    一直以来,Chrome控制台都缺少象IE调试台那样的多行执行模式.  今天意外发现Chrome其实也支持多行模式.默认在Chrome控制台上输入回车后会执行该命令,只需要通过输入Shift+Enter ...

  5. Node.js:console模块

    console模块提供了一个简单的调试功能,类似与web浏览器的javscript console. 下面简单介绍下该模块的使用以及用途,我使用了ES6的模版字符串(使用反引号标识),有兴趣的可以去了 ...

  6. nodejs 使用express开发获取其他网站引用本站点js文件的参数

    nodejs进行站点的开发其性能是很好的,在js 大行其道的天下,使用js基本上可以干好多只要我们能想到的东西,我们可以使用js文件进行用户验证等等. 这次我们就使用express 进行获取其他站点引 ...

  7. Node.js之Console用法小结

    /** * Created by city--online on 16/3/9. */ //console.time()和console.timeEnd()输出中间代码的执行时间(注意:time和ti ...

  8. [Node.js] 關於 console.log 的格式化輸出

    Node.js 當中的 console.log,除了基本字串的輸出之外,還可以利用 %s.%d.%j 格式化的輸出,就讓我們來看些例子吧! 一.範例1 (字串輸出):console.js consol ...

  9. Chrome & console.log & color & js

    Chrome & console.log & color & js console.log & color // OK log(`%cchat_list =\n%c${ ...

随机推荐

  1. Sql 参数的使用

    代码片段: a)声明实例 1.声明SQLCommand实例. SqlCommand cmd = new SqlCommand(); 2.声明SqlDataAdapter实例. SqlDataAdapt ...

  2. C++逗号运算符与逗号表达式

    C++将赋值表达式作为表达式的一种,使赋值操作不仅可以出现在赋值语句中,而且可以以表达式形式出现在其他语句(如输出语句.循环语句等)中.这是C++语言灵活性的一种表现. 请注意,用cout语句输出一个 ...

  3. java设计模式之——策略模式

    1.策略模式有什么好处? 策略模式的好处在于你可以动态的改变对象的行为. 2.设计原则 设计原则是把一个类中经常改变或者将来可能改变的部分提取出来,作为一个接口(c++中可以用虚类),然后在类中包含这 ...

  4. 疯狂JAVA讲义第三章之数组篇

    package test;   /** * Desription: * @author orangebook *<br/>网站:<a href="http://www.cr ...

  5. python进阶十_正則表達式(一)

    近期状态一直不太好,至于原因,怎么说呢,不好说,总之就是纠结中覆盖着纠结,心思全然不在点上,希望能够借助Python的学习以及博客的撰写来调整回来,有的时候回头想一想,假设真的是我自己的问题呢,曾经我 ...

  6. openssl生成pem,密钥证书的创建

    使用OpenSSL生成证书 首先得安装OpenSSL软件包openssl,安装了这个软件包之后,我们可以做这些事情: o Creation of RSA, DH and DSA Key Paramet ...

  7. vi/vim高级命令集粹

    vi/vim高级命令集粹 (ctrl +v过来 留着以后看) 1.交换两个字符位置 xp 2.上下两行调换 ddp 3.把文件内容反转 :g/^/m0/ (未通过) 4.上下两行合并 J 5.删除所有 ...

  8. 基于visual Studio2013解决C语言竞赛题之1027 YN

          题目 解决代码及点评 /* 计算Yn的值,直到|Yn - Yn-1|<10-6为止,并打印出此时共作了多少次COS计算. 提示:Yn+1=COS(Yn),故本 ...

  9. PHP $_SERVER

    $_SERVER 是一个包括了诸如头信息(header).路径(path).以及脚本位置(script locations)等等信息的数组.这个数组中的项目由 Web server创建.不能保证每一个 ...

  10. 基于visual Studio2013解决C语言竞赛题之1061最大值和次最大值

       题目 解决代码及点评 /* 功能: 编写子函数, 求一维整型数组M[10]的最大值及次最大值(次最大值可能不存在). 主函数中输入10个整数, 然后调用上述子函数, 若次最大值存在, ...