firebug指南(三)---在firebug中使用日志(转)

控制台标签概览

这个标签主要用来打印日志之用。它也可以在进行javascript调试的时候当作命令行窗口使用(类似Microsoft Visual Studio中的立即窗口(immediate window))。而且使用它的“概览”这个子服务,还可以纪录javascript代码执行时候的一些有用的信息(如方法调用的次数,执行的时间等)。

 

本部分内容将涵盖下列内容~

 

     ·在firebug中使用日志

     ·如何将日志或者其他信息分组

     ·console.dir 和 console.dirxml

     ·断言(console.assert() )

     ·跟踪(console.trace())

     ·Timing()

     ·Javascript Profiler

 

#1.在firebug中使用日志

Firebug允许我们在控制台标签中使用日志。因此,从此以后您可以告别alert(’hello world‘)或者document.write(’hello world‘)的时代了。

 

在firebug中有5中日志类型。

 

     ·console.log : 打印信息(不带任何图标)

     ·console.debug:在控制台上打印信息,而且还包括一个超链接指向该方法被调用的那一行的地址(最新版本似乎已经没有超链接了)。

     ·console.error():打印信息的形式同console.debug,但是带有 图标。

     ·console.info():打印信息的形式同console.debug,但是带有  图标。

     ·console.warn():打印信息的形式同console.debug,但是带有 图标。

 

例子代码~

 

     ·创建一个新的html文件。

     ·将下列代码粘贴到<body>标签内。

Html代码
  1. <script language="javascript" type="text/javascript">     
  2. console.log('This is log message');     
  3. console.debug('This is debug message');     
  4. console.error('This is error message');     
  5. console.info('This is info message');     
  6. console.warn('This is warning message');     
  7. </script>    
<script language="javascript" type="text/javascript">   
console.log('This is log message');   
console.debug('This is debug message');   
console.error('This is error message');   
console.info('This is info message');   
console.warn('This is warning message');   
</script>  

 

结果如下图所示。

 

 

字符串替代法则:

 

在console.log, console.info, console.debug, console.warn 和 console.error 可以使用字符串替代法则,这个类似与C/C++的字符串替代法则。

 

 

%s字符串
%d, %i整数 (暂时不支持numeric formatting)
%f浮点数 (暂时不支持numeric formatting)
%o对象引用

 

 

例子~

 

注意:这个例子我只使用console.log(),但是其他几个方法( console.info, console.debug, console.warn and console.error )其实也都是可以的。

 

     ·将上个例子中script标签内的内容都删除。

     ·将下列代码粘贴到body标签内。

Js代码
  1. <script language="javascript" type="text/javascript">     
  2.     
  3. //This is for normal string substitution " %s, %d, %i, %f".     
  4. console.log("My Name is %s. My Date of Birth is %dth %s, %i. My height is %f m.""Nicolas Cage", 7, 'January',   
  5.   
  6. 1964, 1.8542);     
  7.     
  8. function Foo(){     
  9. this.LeftHand = function(){     
  10. return "Left Hand";     
  11. }     
  12. this.RightHand = function(){     
  13. return "Right Hand";     
  14. }     
  15. }     
  16.     
  17. //This is for object "%o".     
  18. var objFoo = new Foo();     
  19. console.log('This is %o of Foo class.', objFoo);     
  20.     
  21. </script>    
<script language="javascript" type="text/javascript">   
  
//This is for normal string substitution " %s, %d, %i, %f".   
console.log("My Name is %s. My Date of Birth is %dth %s, %i. My height is %f m.", "Nicolas Cage", 7, 'January', 

1964, 1.8542);   
  
function Foo(){   
this.LeftHand = function(){   
return "Left Hand";   
}   
this.RightHand = function(){   
return "Right Hand";   
}   
}   
  
//This is for object "%o".   
var objFoo = new Foo();   
console.log('This is %o of Foo class.', objFoo);   
  
</script>  

 

 

 

如果你在日志中使用了%s,在控制台上将会显示一个绿色的“object”超链接,点击这个超链接将会跳转到DOM标签。因此你如果点击了上图中第二行的那个“object”超链接,你将会看到所有该对象的属性列表。

 

#2.分组

 

firebug允许我们将各种日志信息进行分组。如果你代码中有相当多的日志,你可以考虑使用这个分组功能。

 

例子~

 

Js代码
  1. <script language="javascript" type="text/javascript">     
  2.     
  3. var groupname = 'group1';     
  4. console.group("message group : %s " , groupname);     
  5. console.log("log message 1 from %s", groupname);     
  6. console.log("log message 2 from %s", groupname);     
  7. console.log("log message 3 from %s", groupname);     
  8. console.groupEnd();     
  9.     
  10. groupname = 'group2';     
  11. console.group("message group : %s " , groupname);     
  12. console.log("log message 1 from %s", groupname);     
  13.     
  14. var subgroupname = 'subgroup1';     
  15. console.group("message group : %s " , subgroupname);     
  16. console.log("log message 1 from %s", subgroupname);     
  17. console.log("log message 2 from %s", subgroupname);     
  18. console.log("log message 3 from %s", subgroupname);     
  19. console.groupEnd();     
  20.     
  21. console.log("log message 3 from %s", groupname);     
  22. console.groupEnd();     
  23.     
  24. </script>    
<script language="javascript" type="text/javascript">   
  
var groupname = 'group1';   
console.group("message group : %s " , groupname);   
console.log("log message 1 from %s", groupname);   
console.log("log message 2 from %s", groupname);   
console.log("log message 3 from %s", groupname);   
console.groupEnd();   
  
groupname = 'group2';   
console.group("message group : %s " , groupname);   
console.log("log message 1 from %s", groupname);   
  
var subgroupname = 'subgroup1';   
console.group("message group : %s " , subgroupname);   
console.log("log message 1 from %s", subgroupname);   
console.log("log message 2 from %s", subgroupname);   
console.log("log message 3 from %s", subgroupname);   
console.groupEnd();   
  
console.log("log message 3 from %s", groupname);   
console.groupEnd();   
  
</script>  

 


 

#3. console.dir 和 console.dirxml

 

     ·console.dir: 得到给定对象的所有方法和属性。下列例子中,我们调用console.dir()得到car对象的Model (属性) 和 getManufactor (方法)。

     ·console.xmldir(): 打印出html元素的xml树。

 

Html代码
  1. <table id="tbl1" cellpadding="0" cellspacing="0" border="0">     
  2. <tr>     
  3. <td>A</td>     
  4. <td>B</td>     
  5. <td>C</td>     
  6. </tr>     
  7. </table>     
  8. <script language="javascript" type="text/javascript">     
  9. //Create a class     
  10. function Car(){     
  11. this.Model = "Old Model";     
  12.     
  13. this.getManufactor = new function(){     
  14. return "Toyota";     
  15. }     
  16. }     
  17.     
  18. //Create a object     
  19. var objCar = new Car();     
  20.     
  21. //Firebug     
  22. console.dir(objCar);     
  23. console.dirxml(document.getElementById('tbl1'));     
  24.     
  25. </script>    
<table id="tbl1" cellpadding="0" cellspacing="0" border="0">   
<tr>   
<td>A</td>   
<td>B</td>   
<td>C</td>   
</tr>   
</table>   
<script language="javascript" type="text/javascript">   
//Create a class   
function Car(){   
this.Model = "Old Model";   
  
this.getManufactor = new function(){   
return "Toyota";   
}   
}   
  
//Create a object   
var objCar = new Car();   
  
//Firebug   
console.dir(objCar);   
console.dirxml(document.getElementById('tbl1'));   
  
</script>  

 

输出结果~

 



 

 #4. 断言 ( console.assert() )

通过console.assert()可以可以判断一个表达式是否正确。如果表达式是错误的,将会在控制台上打印出信息并抛出异常。(似乎在 firebug1.2.1中有问题,我已经发信去问firebug开发小组了)

 

 

#5. Tracing ( console.trace() )

很遗憾,在firebug1.2.1中似乎支持的也不好,我已发信去问:)

 

#6. Timing ( Measuring the time of your code)

 

很遗憾,在firebug1.2.1中似乎支持的也不好,我已发信去问:)

 

#7. Javascript Profiler

可以通过点击控制台标签中的“概况”按钮启动此功能,通过它我们可以对javascript的性能进行优化。关于这方面的细节将在接下来的章节中详细讲述。

 原文连接:http://04101334.iteye.com/blog/339693

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值