Chinaunix首页 | 论坛 | 博客
  • 博客访问: 817916
  • 博文数量: 62
  • 博客积分: 526
  • 博客等级: 二等列兵
  • 技术积分: 2078
  • 用 户 组: 普通用户
  • 注册时间: 2012-02-04 20:41
个人简介

博客迁移至 freefe.cc

文章分类

全部博文(62)

分类: JavaScript

2013-12-11 15:00:52


原文地址:
原文作者:Dr. Axel Rauschmayer

在诸多 JavaScript解析引擎中,均有一个含有记录日志和调试方法的 console 的全局对象。该对象并不是JS语言规范的一部分,但是自从被 Firebug 调试器率先推出之后已成为事实上的标准。因为它们的主要作用适用于调试, 所以 console的方法只被频繁的在开发阶段使用,很少在代码部署阶段使用。

这篇博文描述了 console 方法的概述。


1. 如何在跨浏览器情况下规定 console API?

Firebug 首先提供了 console API 并且其在  也算是最接近标准的文档。此外Brian Kardell 和 Paul Irish 也在为一份长期的跨浏览器行为一致性的  努力着。在此之前,跨浏览器行为是极度混乱的。所以该博文仅能提供一下概述。对于细节方面就需要参考各个平台下的文档:

Firebug: 
Internet Explorer:  
Node.js: 

IE9下的BUG:该浏览器下,console 对象只存在于被至少打开过一次开发工具的情况下。意味着你可能会在未打开开发工具的时候引用 console 得到一个 ReferenceError。所以解决方法就是需要检测 console 是否存在,否则就要创建一个虚拟实现的对象。


2. 简单的日志记录

方法:
console.clear()
清除日志

console.debug( object1, object2?, ... )
倾向于 console.log() 执行与此方法相同。

console.error( object1, object2?, ... )
控制台记录参数,在浏览器中被记录的内容会有一个"错误"标识标记,包括一个堆栈跟踪和代码的链接。

console.exception( errorObject, object1?, ... ) [ 仅在 Firebug ]
记录object1等,然后展现相互调用的堆栈跟踪。

console.info( object1, object2?, ... )
console.log() 执行与此方法相同。(原文有点问题)

console.log( object1, object2?, ... )
控制台记录参数,如果第一个参数是为 printf风格 类型的字符串,那么使用它来打印剩余的参数。
(例 Node.js)

唯一可靠的跨平台格式指令是 %s。 Node.js 支持 %j 以 JSON 的方式来用处理数据。浏览器往往支持一些与控制台交互的指令。

console.trace()
记录堆栈跟踪(在浏览器中的交互)

console.warn( object1, object2?, ...  )
控制台记录参数,在浏览器中被记录的内容会有一个"警告"标识标记,包括一个堆栈跟踪和代码的链接。

支持的平台版本

exception 已经排版为斜体,因为仅有一个平台支持。


3. 检测和计数

方法:
console.assert( expr, obj? )
当 expr 为 false 的时候,控制台记录 obj ,抛出一个 异常。

console.count( lable? )
记录该 label 所在行被执行的次数。

支持的平台版本



4. 记录的格式化

方法:
console.dir( object )
在控制台输出对象形式的表现。在浏览器中可以进行交互式查看。

console.dirxml( object )
输出一个 HTML 或者 XML 元素的 XML 源码树。

console.group( object1?, object2?, ... )
控制台记录这些对象,打开一个记录所有将来内容的嵌套块。使用 console.groupEnd() 方法关闭。块为展开形式,可以折叠。

console.groupCollapsed( object1?, object2?, ...  )
功能与 console.group 一致,但是块为闭合状态。

console.groupEnd()
关闭使用 console.group() 和 console.groupCollapsed() 打开的块。

console.table( data, columns? )
以每行一个元素的表格形式输出数组。可选参数 columns 可以指定列显示属性或者数组索引。如果不传递参数,所有表格列 号会之用属性键值。

支持的平台版本



5. 分析和时序

方法:
console.markTimeline( label ) [ 仅支持 Safari ]
与 timeStamp() 一致。

console.profile( title? )
开启分析,可选参数 title 在分析报告中使用

console.profileEnd()
结束分析,并且输出分析报告



console.time( label )
开启标签为 label 的计数器

console.timeEnd( label )
关闭标签为 label 的计数器,输出自打开计时器以来的经过的时间。

console.timeStamp( label? )
记录给标签 label 一个时间戳,可能将记录到控制台或者时间轴上。

支持的平台版本



6. 致谢

两位指点过本文内容的:Matthias Reuter (@gweax) 和 Philipp Kyeck (@pkyeck)。

阅读(2357) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~