已经厌烦了用alert去调试js吗?那别错过这个js了。先不说啥了,点击上面的代码看看效果吧。
利用这个js,你可以轻松的在js输出任何信息不同的信息会有不同的图标表示。而且不像alert,blackbird不会中断js的执行。
首先介绍下官网:
http://www.gscottolson.com/blackbirdjs/
我上面的demo以及下面将会说到的都是来源自这个网站。
下载:
先把需要用到的文件下载下来,可以点击这里下载。下载下来的zip会解压出很多文件,你会看到它还提供MAC OSX版本的文件。我们需要用到的是:blackbird.js,blackbird.css以及blackbird_icons.png和blackbird_panel.png两张图片,另外由于Blackbird是基于jQuery的,所以还需要下载jquery,请自行到jQuery网站下载。需要注意到是Blackbird用到是1.2.6版本。
配置:
然后在页面引用这些资源:
需要注意到是两种图片的位置必须放置正确,默认是跟css同目录下,如有需要自行修改css文件
使用方法:
添加log的方法很简单,看demo那里的代码就清楚了:
log.debug( 'this is a debug message' );
log.info( 'this is an info message' );
log.warn( 'this is a warning message' );
log.error( 'this is an error message' );
从上面代码可以看出,log可以分为4种类型:debug、info、warn跟error,在输出面板上分别会用不同的icon表示。
另外你还能使用profile方法记录代码的执行时间,代码就不贴了,请参见demo里关于profile方法的代码。作为profile方法的那个字符串将作为一个标识,如果在第二次调用profile方法时使用相同的字符串的话,则两次调用profile方法之间的时间间隔会被记录下来。跟上面4种类型的log一样,profile在显示面板上也有专属的icon。
API:
除了上面提高过的几个方法外,Blackbird提供其他很多方法供调用。
| log.toggle() | 隐藏/显示Blackbird面板 |
| log.move() | 移动面板,但是移动的位置是固定的,会在左上,右上,左下,右下之间循环切换。 |
| log.resize() | 放大或者缩小Blackbird面板。其实就是在两个大小之间切换。 |
| log.clear() | 清楚面板上的log记录。 |
| log.debug(message) | 记录debug信息。 |
| log.info(message) | 记录info信息。 |
| log.warn(message) | 记录warning信息。 |
| log.error(message) | 记录error信息。 |
| llog.profile(label) | 开始或结束一个计时器,这个方法会把输入的参数作为一个标识,如果两次调用这个方法使用的参数一样,则两次调用方法之间的时间间隔就会记录下来。 |
键盘控制:
可以通过键盘上的快捷键控制面板。
F2用来显示或者隐藏面板,相当于toggle()方法。
Shift + F2用来移动面板,相当于move()方法。
Alt + Shift + F2是清除功能,相当于clear()方法。
图标解释:
Blackbird的控制台面板上有很多图标,左边5个分别为:debug信息的开关,info信息的开关,warning信息的开关,error信息的开关,profile信息的开服按。而右边5个则分别为:切换面板大小,清除log,关闭面板。关闭面板并不会把上面的log清除。
另外可以通过Alt + 点击信息图标来单独显示那个图标对应的信息。
修改命名空间:
如果有其他的js使用了跟Blackbird相同的命名空间(namespace),则可以通过修改以下的代码来修改命名空间:
var NAMESPACE = 'log';
修改了命名空间后,则调用方法也需要作相应的改变。例如var NAMESPACE = 'myCustomLog';以log.debug()
为例,则需要改为myCustomLog.debug()。
浏览器兼容性:
IE 6+,FF 2+,Safari 2+,Opera 9.5
另外我在Chrome 2测试也没问题。
补充:
面板上有个Visible on page load的功能,就是用来开关加载页面后显不显示的功能。实现方法是通过cookie。详情可以看下载回来的demo页面代码。
另外个人觉得这个Blackbird并不能完全代替alert功能,因为毕竟它要在页面插入自己的代码,这样就会破坏了页面原有的DOM结构,可能会影响到某些需要对DOM进行操作的js。
更多的详情也请到官网进行查看。
--by icyfire @Home on 2009.06.19