浏览器自带的console

现在的浏览器为了方便调试javascript,往往都自带console

对于firefox我们可以使用firebug。

IE浏览器从IE7之后开始带开发人员工具

Chrome 也有自己的调试工具

Opera Safari 很少用,略过不提

在自己的类库中想去调用浏览器的控制台,我的做法如下:

var K={

log:(window.console&&window.console.log)||function(){}

}

如果在window对象下有console对象,并且console有log方法,则K.log等于console.log,否则给K.log一个空方法,使以后调用K.log的时候不会出错,

对于IE6,在不装任何扩展的情况下,K.log是个空方法,这很正常

其它浏览器也都能正常的工作,然而chrome 8.0.558不行,这样写会出错(详情见我的上一篇文章)

因此我把方法改成

方法一:

var K={

log:function(){

   window.console&&window.console.log&&window.console.log(arguments);

};

这样在所有浏览器下都可正常运行,但是在控制台输出的时候,和原始的方法会有些不一样

后来代码改成

方法二:

var K={

log:function(){

var a=window.console,b=arguments;

if(a&&a.log){

a.log.apply(a,b);

}

}

}

这样就可以变相使用原生的console.log,然而事实总不是那么美好,IE8下 console.log没有apply及call,

所以上面代码会出错,哎,代码就只好改成了

方法三:

var K={

log:function(){

var a=window.console,b=arguments;

if(a&&a.log){

a.log.apply?a.log.apply(a,b):a.log(b);

}

}

}

这样就没有问题了,因为arguments是个类数组的东西,所以直接调用a.log(arguments);在控制台输出一个简单的字符串时,前后会加上中括号,而原生的console.log方法是不加的。

不想采用方法二就是这个原因,ff下调用console.log('ab');和(function(){console.log(arguments)}('ab'))输出结果是不一样的

目前只好凑合用方法三了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值