Javascript 调试利器 Firebug使用详解六


<h1>Javascript 调试利器 Firebug使用详解六</h1>
<div id="art_info">
作者:  字体:[<a href="javascript:turnbig()">增加</a> <a href="javascript:turnsmall()">减小</a>] 类型:转载
</div><!--end art_info-->
<div class=blank3></div>
<div id="art_demo">有时候,为了更清楚方便的查看输出信息,我们可能需要将一些调试信息进行分组输出,那么可以使用console.group来对信息进行分组,在组信息输出完成后用console.groupEnd结束分组。</div>
<div class=blank3></div>
<div id="con_all">
<script type="text/javascript">dy("bcall");</script>
</div>
<div id="art_content">
<!--NEWSZW_HZH_BEGIN-->
<P>我们测试一下把刚才的4个输出作为一个分组输出,修改代码为: <BR><div class="codetitle"><span><a style="CURSOR: pointer" data="25045" class="copybut" id="copybut25045" οnclick="doCopy('code25045')"><U>复制代码</U></a></span> 代码如下:</div><div class="codebody" id="code25045"><BR>console.group('开始分组:'); <BR>console.debug('This is console.debug!'); <BR>console.info('This is console.info!'); <BR>console.warn('This is console.warn!'); <BR>console.error('This is console.error!'); <BR>console.groupEnd(); <BR></div><BR>刷新页面看看结果(图11-5)。在console.group中,我们还可以加入一个组标题“开始分组:”。如果需要,我们还可以通过嵌套的方式,在组内再分组。 <BR><IMG src=" http://files.jb51.net/upload/20090705005127793.gif" border=0><BR>图11-5 <BR>有时候,我们需要写一个for循环列出一个对象的所有属性或者某个HTML Element下的所有节点,有了firebug后,我们不需要再写这个for循环了,我们只需要使用console.dir(object)或console.dirxml(element)就可以了。 <BR>在测试页中加入代码测试一下: <BR><div class="codetitle"><span><a style="CURSOR: pointer" data="16759" class="copybut" id="copybut16759" οnclick="doCopy('code16759')"><U>复制代码</U></a></span> 代码如下:</div><div class="codebody" id="code16759"><BR>console.dir(document.getElementById('div1')); <BR>console.dirxml(document.getElementById('div1')); <BR></div><BR>结果请看图11-6和图11-7。<BR><IMG src=" http://files.jb51.net/upload/20090705005232601.gif" border=0>&nbsp;<BR>图11-6 <BR><IMG src=" http://files.jb51.net/upload/20090705005250216.gif" border=0><BR>图11-7 <BR>是否想知道代码的运行速度?很简单,使用console.time和console.timeEnd就可以。 <BR>修改一下test函数的代码,测试一下运行1000次循环需要多少时间: <BR><div class="codetitle"><span><a style="CURSOR: pointer" data="94733" class="copybut" id="copybut94733" οnclick="doCopy('code94733')"><U>复制代码</U></a></span> 代码如下:</div><div class="codebody" id="code94733"><BR>function test(){ <BR>console.time('test'); <BR>for(var i=0;i&lt;1000;i++){ <BR>document.getElementById('div2').innerHTML=i; <BR>//console.log('当前的参数是:%d',i); <BR>} <BR>console.timeEnd('test'); <BR>} <BR></div><BR>刷新页面,单击“方块二”,看看结果(图11-8)。在这里要注意的是console.time和console.timeEnd里的参数要一致才会有正确的输出,而该参数就是信息的标题。 <BR><IMG src=" http://files.jb51.net/upload/20090705005341236.gif" border=0><BR>图11-8 <BR>是否想知道某个函数是从哪里调用的?console..trace可帮助我们进行追踪。在test函数的结尾加入: <BR>console.trace(); <BR>刷新页面,单击“方块二”,看看结果(图11-9)。结果显示是在坐标(97,187)的鼠标单击事件执行了test函数,而调用的脚本是在simple.html文件里的第1行。因为是在HTML里面的事件调用了test函数,所以显示的行号是第1行。如果是脚本,则会显示调用脚本的行号,通过单击可以直接去到调用行。<BR><IMG src=" http://files.jb51.net/upload/20090705005411758.gif" border=0><BR>图11-9 <BR>如果想在脚本某个位置设置断点,可以在脚本中输入“debugger”作为一行。当脚本执行到这一行时会停止执行等待用户操作,这时候可以通过切换到“Script”标签对脚本进行调试。 <BR>Firebug还有其它的一些调试函数,这里就不一一做介绍,有兴趣可以自己测试。表4是所有函数的列表: <BR>
<TABLE cellSpacing=0 cellPadding=0 border=1>
<TBODY>
<TR>
<TD vAlign=top width=235>
<P>函数<BR></P></TD>
<TD vAlign=top width=333>说明</TD></TR>
<TR>
<TD vAlign=top width=235>console.log(object[, object, ...])</TD>
<TD vAlign=top width=333>
<P>向控制台输出一个信息。可以输入多个参数,输出将已空格分隔各参数输出。</P>
<P>第一参数可以包含格式化文本,例如:</P>
<P>console.log(‘这里有%d个%s',count,apple);</P>
<P>字符串格式:</P>
<P>%s :字符串。</P>
<P>%d, %i:数字。</P>
<P>%f: 浮点数。</P>
<P>%o -超链接对象。</P></TD></TR>
<TR>
<TD vAlign=top width=235>
<P>console.debug(object[, object, ...])</P></TD>
<TD vAlign=top width=333>
<P>向控制台输出一个信息,信息包含一个超链接链接到输出位置。</P></TD></TR>
<TR>
<TD vAlign=top width=235>
<P>console.info(object[, object, ...])</P></TD>
<TD vAlign=top width=333>
<P>向控制台输出一个带信息图标和背景颜色的信息,信息包含一个超链接链接到输出位置。</P></TD></TR>
<TR>
<TD vAlign=top width=235>
<P>console.warn(object[, object, ...])</P></TD>
<TD vAlign=top width=333>
<P>向控制台输出一个带警告图标和背景颜色的信息,信息包含一个超链接链接到输出位置。</P></TD></TR>
<TR>
<TD vAlign=top width=235>
<P>console.error(object[, object, ...])</P></TD>
<TD vAlign=top width=333>
<P>向控制台输出一个带错误图标和背景颜色的信息,信息包含一个超链接链接到输出位置。</P></TD></TR>
<TR>
<TD vAlign=top width=235>
<P>console.assert(expression[, object, ...])</P></TD>
<TD vAlign=top width=333>
<P>测试一个表示是否为true,如果为false,提交一个例外信息到控制台。</P></TD></TR>
<TR>
<TD vAlign=top width=235>
<P>console.dir(object)</P></TD>
<TD vAlign=top width=333>
<P>列出对象的所有属性。</P></TD></TR>
<TR>
<TD vAlign=top width=235>
<P>console.dirxml(node)</P></TD>
<TD vAlign=top width=333>
<P>列出HTML或XML Element的XML源树。</P></TD></TR>
<TR>
<TD vAlign=top width=235>
<P>console.trace()</P></TD>
<TD vAlign=top width=333>
<P>输出堆栈的调用入口。</P></TD></TR>
<TR>
<TD vAlign=top width=235>
<P>console.group(object[, object, ...])</P></TD>
<TD vAlign=top width=333>
<P>将信息分组再输出到控制台。通过console.groupEnd()结束分组。</P></TD></TR>
<TR>
<TD vAlign=top width=235>
<P>console.groupEnd()</P></TD>
<TD vAlign=top width=333>
<P>结束分组输出。</P></TD></TR>
<TR>
<TD vAlign=top width=235>
<P>console.time(name)</P></TD>
<TD vAlign=top width=333>
<P>创建一个名称为name的计时器,计算代码的执行时间,调用console.timeEnd(name)停止计时器并输出执行时间。</P></TD></TR>
<TR>
<TD vAlign=top width=235>
<P>console.timeEnd(name)</P></TD>
<TD vAlign=top width=333>
<P>停止名称为name的计时器并输出执行时间。</P></TD></TR>
<TR>
<TD vAlign=top width=235>
<P>console.profile([title])</P></TD>
<TD vAlign=top width=333>
<P>开始对脚本进行性能测试,title为测试标题。</P></TD></TR>
<TR>
<TD vAlign=top width=235>
<P>console.profileEnd()</P></TD>
<TD vAlign=top width=333>
<P>结束性能测试。</P></TD></TR>
<TR>
<TD vAlign=top width=235>
<P>console.count([title])</P></TD>
<TD vAlign=top width=333>
<P>计算代码的执行次数。titile作为输出标题。</P></TD></TR>
<TR>
<TD vAlign=top width=568 colSpan=2>
<P align=center>表4</P></TD></TR></TBODY></TABLE><BR><STRONG>12、 在IE中使用Firebug</STRONG> <BR>Firebug是Firefox的一个扩展,但是我习惯在IE中调试我的页面怎么办?如果在页面脚本中加入console.log()将调试信息写到Friebug,在IE中肯定是提示错误的,怎么办?不用担心,Frirebug提供了Frirbug Lite脚本,可以插入页面中模仿Firebug控制台。 <BR>我们可以从一下地址下载firebug lite: <BR>http://www.getfirebug.com/releases/firebuglite1.0-b1.zip <BR>然后在页面中加入: <BR>&lt;script language="javascript" type="text/javascript" src="/路径/firebug.js"&gt;&lt;/script&gt; <BR>如果你不想在IE中模仿Friebug控制台,只是不希望console.log()脚本出现错误信息,那么在页面中加入一下语句: <BR>&lt;script language="javascript" type="text/javascript" src="/路径/firebugx.js"&gt;&lt;/script&gt; <BR>如果你不想安装Firebug Lite,只是想避免脚本错误,那么可以在脚本中加入以下语句: <BR>if (!window.console || !console.firebug) <BR>{ <BR>var names = ["log", "debug", "info", "warn", "error", "assert", "dir", "dirxml", <BR>"group", "groupEnd", "time", "timeEnd", "count", "trace", "profile", "profileEnd"]; <BR>window.console = {}; <BR>for (var i = 0; i &lt; names.length; ++i) <BR>window.console[names[i]] = function() {} <BR>} <BR>我们将firebug.js加入到测试页面中,然后打开IE,加载页面。页面加载完成后,我们按下F12键就可以打开控制台了。每次页面刷新后,你都要按F12键打开控制台,是不是很烦?如果不想那么,就在html标签中加入“debug='true'”,例如: <BR>&lt;html debug="true"&gt; <BR>在Friebug Lite中也有命令行,但是功能没那么强。 </P>
<!--NEWSZW_HZH_END-->
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值