- 浏览: 82612 次
- 性别:
- 来自: 江西
最新评论
-
115646002:
我请问个问题:
我在配置eclipse3.6的时候,应该是某一 ...
eclipse 3.6 Helios 最新插件 -
xangqun:
是啊,不过真的很好用
tomcat插件与Jrebel插件整合(java web开发利器) -
freecode:
jrebel收费吧
tomcat插件与Jrebel插件整合(java web开发利器) -
lydawen:
开发js相当不错的插件 aptana - http://upd ...
eclipse3.5 Galileo最新实用插件 -
hszhl:
eclipse{wtp+cdt+ve#/windowBuild ...
eclipse3.5 Galileo最新实用插件
引言:
本篇将涵盖以下几个主题:
·javascript性能评测器
·错误跟踪
·xmlhttprequest对象跟踪
#1.javascript性能评测器
javascript性能评测器是firebug中非常有用的一个功能,它可以计算出javascript代码的执行的一些时间数据(如方法调用次数,执行的时间,平均执行时间等等)。这对提高javascript代码的性能有非常大的帮助。
我们有三种方式可以使用javascript性能评测器,分别是点击控制台标签上的“概况”按钮或者在javascript代码中写入 “console.profile()”或者在命令行中中输入“profile()”。在本篇中我将讲解前两种方式,如果你对第三种方式有兴趣,请点击这里(第四篇) 。
console.profile()
·新建一个html文件,然后将下列代码粘贴到建好的html中。
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-
- transitional.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml" >
- <head>
- <title>Firebug</title>
- <script language="javascript" type="text/javascript">
- function startDoSomething(){
- console.profile('Measuring time');
- doSomething();
- console.profileEnd();
- }
- function doSomething(){
- doThis(1000);
- doThis(100000);
- doThat(10000);
- doThisAndThat(1000,10000);
- }
- function doThis(count){
- for(var i=0;i<count;i++){}
- }
- function doThat(count){
- for(var i=0;i<count;i++){}
- }
- function doThisAndThat(countThis,countThat){
- for(var i=0;i<countThis;i++){ for(var j=0;j<countThat;j++){} }
- }
- </script>
- </head>
- <body>
- Open the console tab. Click the button below and wait a lit.. <br />
- <input type="button" value="Start" onclick="startDoSomething();"/>
- </body>
- </html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1- transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head> <title>Firebug</title> <script language="javascript" type="text/javascript"> function startDoSomething(){ console.profile('Measuring time'); doSomething(); console.profileEnd(); } function doSomething(){ doThis(1000); doThis(100000); doThat(10000); doThisAndThat(1000,10000); } function doThis(count){ for(var i=0;i<count;i++){} } function doThat(count){ for(var i=0;i<count;i++){} } function doThisAndThat(countThis,countThat){ for(var i=0;i<countThis;i++){ for(var j=0;j<countThat;j++){} } } </script> </head> <body> Open the console tab. Click the button below and wait a lit.. <br /> <input type="button" value="Start" onclick="startDoSomething();"/> </body> </html>
·用firefox浏览器将该html文件打开
·打开firebug的控制台标签
·点击“start”按钮,然后稍等片刻..(结果如下图)
·“函数”列: 本列显示了每个方法的方法名
·“调用”列: 本列显示了方法被调用的次数。(在本例中doThis()方法总共被调用了2此)
·“百分比”列: 本列显示了每个方法执行时间在整个例子执行时间所占的百分比
·“占用时间”列: 本列显示了方法的占用时间,打个比方:doSomething() 方法没有自己的逻辑代码,他仅仅调用了其他的方法,因此如上图所示,他的执行时间几乎为0.(不妨试一下在doSomething() 方法内加入一个10000次的循环,看看效果如何)。
·“时间”列: 本列显示了方法的执行时间间隔(从开始执行一直到执行结束返回)。
·“平均时间”列: 时间/调用次数。
·“最小时间”列: 该方法所有被调用中执行时间最短的时间(本例中doThis()方法被调用两次,而doThis(1000)执行时间最短为0.053ms )。
·“最大时间”列: 该方法所有被调用中执行时间最长的时间。
·“文件”列: 该方法在程序中定义的位置。
通过点击控制台标签上工具栏中的“概况”按钮
如果不想通过代码的方式启动javascript性能评测器,不妨使用这个方式(如下图)。
测试步骤~
·在上个例子的代码上将doSomething() 方法内的console.profile(’Measuring time’); 和 console.profileEnd();这两个语句删除。
·在firebug打开修改后的文件。
·打开firebug的控制台标签。
·点击“概况”按钮。
·点击页面上的“start”按钮。
·大约等半分钟左右。
·再次点击“概况”按钮。
到这里,javascript性能评测器这块内容就讲完了,如果还有什么疑问,请在我博客上留言,以便共同讨论。
好,接下来我们讲下一个主题。
#2.控制台标签的选项菜单
在控制台标签的右边有一个“选项”按钮,如下图。
我这里将他们分为三个类别.
1.错误跟踪
·显示javascript错误
·显示javascript警告
·显示CSS错误
·显示XML错误
·显示Chrome错误
·显示Chrome信息
·显示外部错误
·显示错误的堆栈信息
·严格警告
2.XMLHttpRequest跟踪
·显示XMLHttpRequest
3.命令行
·更大的命令行
#2.1错误跟踪和过滤
可以跟踪脚本代码,或者CSS,XML等文件中的错误信息,也可以通过选定或者取消选定进行错误信息的过滤(如上图中打钩的即为选定)。
例子~
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml" >
- <head>
- <title>Firebug</title>
- <style type="text/css">
- .normalText{
- bcolor : red; /* This is ERROR!! */
- }
- </style>
- <script language="javascript" type="text/javascript">
- function foo(){
- var objTxt = doucmnet.getElementById('nameTextBox'); //This is ERROR!!
- alert(objTxt.value);
- }
- </script>
- </head>
- <body>
- <input id="nameTextBox" class="normalText" type="text" />
- <input type="button" value="Start" onclick="foo();"/>
- </body>
- </html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head> <title>Firebug</title> <style type="text/css"> .normalText{ bcolor : red; /* This is ERROR!! */ } </style> <script language="javascript" type="text/javascript"> function foo(){ var objTxt = doucmnet.getElementById('nameTextBox'); //This is ERROR!! alert(objTxt.value); } </script> </head> <body> <input id="nameTextBox" class="normalText" type="text" /> <input type="button" value="Start" onclick="foo();"/> </body> </html>
输入结果~
#2.2.XMLHttpRequest对象跟踪
这是firebug中非常有用的功能之一,尤其对Ajax开发员来说是相当有用的。以前我们在开发Ajax程序的时候都有一个普遍的问题就是一旦 xmlhttprequest对象出了什么错,就很难进行排错,而且也很难发现异步返回的响应结果是否正确。
但是使用firebug后,这一些将会变得非常简单,我们只要勾上“选项”菜单中的“xmlhttprequests”选项,firebug将会为我们做以下几件事:
·执行时间(从发出请求到收到响应)
·参数(QueryString)
·HTTP Header
·响应(response)
这里以一个使用ajax验证用户名是否存在的简单例子为例.
例子~
- <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
- <html>
- <head>
- <meta http-equiv="Content-Type">
- <title>Login</title>
- <script type="text/javascript">
- function checkUserName() {
- document.getElementById("msg").innerHTML = "<font color='green'>checking...</font>" ;
- var url = "checklogin.jsp?username=" + document.forms[0].username.value ;
- if (window.XMLHttpRequest) {
- xhr = new XMLHttpRequest();
- } else {
- if(window.ActiveXObject){
- try {
- xhr = new ActiveXObject("Microsoft.XMLHttpRequest") ;
- } catch(e) {}
- }
- }
- if (xhr) {
- xhr.onreadystatechange = showContents ;
- xhr.open("GET", url, true) ;
- xhr.send(null) ;
- } else {
- document.getElementById("msg").innerHTML = "sorry ! but your browser coundn't create a XmlHttpRequest object !" ;
- }
- }
- function showContents() {
- if (xhr.readyState == 4) {
- if(xhr.status == 200){
- var outMsg = xhr.responseXML.getElementsByTagName("msg")[0].childNodes[0].nodeValue ;
- if (outMsg == "notexist") {
- document.getElementById("msg").innerHTML = "<font color=green><strong>User not exists!!</strong></font>" ;
- } else {
- document.getElementById("msg").innerHTML = "<font color=red><strong>User exists!!</strong></font>" ;
- }
- } else {
- var outMsg = "there was a problem on your server : status = " + status ;
- }
- }
- }
- </script>
- </head>
- <body>
- <center>
- <form action="checklogin.jsp">
- username : <input type="text" name="username" onblur="checkUserName();" /><span><div id="msg"></div></span><br><br>
- password : <input type="password" name="password" /><br><br>
- <input type="submit" value="submit" />
- </form>
- </center>
- </body>
- </html>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type"> <title>Login</title> <script type="text/javascript"> function checkUserName() { document.getElementById("msg").innerHTML = "<font color='green'>checking...</font>" ; var url = "checklogin.jsp?username=" + document.forms[0].username.value ; if (window.XMLHttpRequest) { xhr = new XMLHttpRequest(); } else { if(window.ActiveXObject){ try { xhr = new ActiveXObject("Microsoft.XMLHttpRequest") ; } catch(e) {} } } if (xhr) { xhr.onreadystatechange = showContents ; xhr.open("GET", url, true) ; xhr.send(null) ; } else { document.getElementById("msg").innerHTML = "sorry ! but your browser coundn't create a XmlHttpRequest object !" ; } } function showContents() { if (xhr.readyState == 4) { if(xhr.status == 200){ var outMsg = xhr.responseXML.getElementsByTagName("msg")[0].childNodes[0].nodeValue ; if (outMsg == "notexist") { document.getElementById("msg").innerHTML = "<font color=green><strong>User not exists!!</strong></font>" ; } else { document.getElementById("msg").innerHTML = "<font color=red><strong>User exists!!</strong></font>" ; } } else { var outMsg = "there was a problem on your server : status = " + status ; } } } </script> </head> <body> <center> <form action="checklogin.jsp"> username : <input type="text" name="username" onblur="checkUserName();" /><span><div id="msg"></div></span><br><br> password : <input type="password" name="password" /><br><br> <input type="submit" value="submit" /> </form> </center> </body> </html>
·创建一个html文件,将上面的代码粘贴到文件中,取名为login.html
·创建一个jsp文件,将下列代码粘贴到文件中,取名为checklogin.jsp
- <%@ page import="java.sql.*" %>
- <%
- response.setContentType("text/xml") ;
- response.setHeader("catch-control", "no-store") ;
- response.setDateHeader("Expires", 0) ;
- String username = request.getParameter("username") ;
- String login = null;
- if ("firebug".equalsIgnoreCase(username))
- login = "exist" ;
- else
- login="notexist" ;
- response.getWriter().write("<msg>" + login + "</msg>") ;
- %>
<%@ page import="java.sql.*" %> <% response.setContentType("text/xml") ; response.setHeader("catch-control", "no-store") ; response.setDateHeader("Expires", 0) ; String username = request.getParameter("username") ; String login = null; if ("firebug".equalsIgnoreCase(username)) login = "exist" ; else login="notexist" ; response.getWriter().write("<msg>" + login + "</msg>") ; %>
·部署到tomcat上
·打开login.html,在“username”右边文本框中输入“ffirebug”。
·点击password文本框,使焦点离开username。
结果~
发表评论
-
WEB前端优化技巧(转)
2010-05-06 14:24 715首先,我们通过一个雅虎的统计图表来看看打开http://ya ... -
Tamper Data安装与使用(转)
2010-05-06 14:09 1229amper Data概览 注意:我将会讲述一些有关Ta ... -
firebug指南(六)--HTML标签应用实例(转)
2010-05-06 13:59 756例1.1 如何利用firebug的html灵活视察web页面中 ... -
firebug指南(五)--- HTML标签详解(转)
2010-05-06 13:56 1054引言: HTML标签是firebug中的第二个标 ... -
firebug指南(三)---在firebug中使用日志(转)
2010-05-06 13:53 1023控制台标签概览 这个标签主要用来打印日志之用。它也可以在进 ... -
firebug指南(二)---firebug命令行API详解(转)
2010-05-06 13:52 1095引言: 命令行是firebug中最有用的功能 ... -
firebug指南(一)---概览与安装(转)
2010-05-06 13:50 1246这篇指南总共分 ... -
JavaScript内核系列 第1章 前言及概述(转载)
2010-04-30 15:02 1052本文转载自http://abruzzi.iteye.com/b ... -
Jquery常用方法一览 (转载)
2010-04-30 14:55 841本文转载自cnbolg,但是没写出处,如果是作者可以联系我,我 ... -
jquery 实现过滤器(转载)
2010-04-30 14:45 1072本文转载自:http://abruzzi.iteye.com/ ...
相关推荐
- 提供了对ES6模块的初步支持,便于跟踪和调试模块化JavaScript代码。 这些版本的迭代展示了Firebug作为Web开发工具的不断发展和进化,它始终紧跟Web技术的最新趋势,为开发者提供了强大的调试和分析工具。然而,...
Firebug是Web开发领域的一款经典工具,特别是在JavaScript和CSS调试方面有着广泛的影响力。"firebug-2.0.16-fx"显然指的是Firebug的一个特定版本,2.0.16,专为Firefox浏览器(fx)设计。在这个版本中,Firebug提供...
Firebug是firefox下的一个扩展,能够调试所有网站语言,如Html,Css等,但FireBug最吸引人的就是javascript调试功能,使用起来非常方便,而且在各种浏览器下都能使用(IE,Firefox,Opera, Safari)。除此之外,其他功能...
- JavaScript调试:其内置的JavaScript控制台让开发者能跟踪代码执行,设置断点,查看变量值,对于查找和修复JavaScript错误至关重要。 - 网络监控:Firebug能够详细记录页面加载过程中的网络请求,包括HTTP头信息...
除了这些核心功能,1.5.2-fx版本还包含了一些其他实用工具,如网络面板用于分析页面加载性能,脚本调试器帮助开发者追踪JavaScript错误和执行流程,以及存储面板查看Cookie和其他本地存储数据。这些功能使得Firebug...
firebug-1.11.2-fx.xpi一个不错的资源
firebug-2.0.19-fx
火狐浏览器的Firebug是一款强大的Web开发和调试工具,它为开发者提供了查看、编辑和测试HTML、CSS、JavaScript以及DOM的能力。Firebug-2.0.16-fx.rar是这个插件的一个特定版本,适用于Firefox 48.0。在这款版本中,...
Firebug是Web开发领域的一款经典工具,特别是在JavaScript调试、网页元素检查、网络性能分析等方面具有重要作用。"firebug-1.9.0-fx"显然指的是Firebug的1.9.0版本,专用于Firefox浏览器(fx是Firefox的缩写)。这个...
firebug-1.10.6-fx.xpi
老版本的firebug-2.0.19-fx和hackbar-1.6.3-fx支持老版的火狐浏览器
firebug-1.4.4-fx,jQuery的调试工具,firebug-1.4.4-fx,firebug-1.4.4-fx,firebug-1.4.4-fx,firebug-1.4.4-fx,firebug-1.4.4-fx
3. JavaScript调试:JavaScript控制台是Firebug的亮点之一,它支持断点设置、步进执行、查看变量值、性能分析等功能,帮助开发者调试和优化JavaScript代码。 4. 网络面板:Firebug的网络面板记录了页面加载过程中...
这个特定的版本号2.0.16意味着这是一个更新过的版本,可能包含了错误修复和性能改进。 描述中的内容是相同的,只给出了文件名,没有提供额外的信息,因此我们主要关注标题提供的信息。 标签"spring"可能有两层含义...
初识Firebug全文--Firebug的使用.mht初识Firebug全文--Firebug的使用.mht初识Firebug全文--Firebug的使用.mht初识Firebug全文--Firebug的使用.mht初识Firebug全文--Firebug的使用.mht初识Firebug全文--Firebug的使用...
1. JavaScript调试:Firebug提供了详细的JavaScript调试功能,包括断点设置、单步执行、查看变量值、调用堆栈跟踪、性能分析等。这使得开发者能够精确地定位和修复JavaScript代码中的错误,优化脚本性能。 2. HTML...
尤其是在Firebug 1.5.0-fx这个版本中,它进一步提升了性能和功能,使得Web开发过程更为高效和精确。本文将深入探讨Firebug 1.5.0-fx的主要特点、功能及其在实际开发中的应用。 首先,Firebug的核心功能在于其强大的...
Firebug 为你的 Firefox 集成了浏览网页的同时随手可得的...你可以对任何网页的 CSS、HTML 和 JavaScript 进行实时编辑、调试和监控。\n\n访问 Firebug 网站来查看文档、截屏以及讨论组(英语):http://getfirebug.com
Firebug-yslow-培训讲稿 Firebug-yslow-培训讲稿
firebug-1.3.3-fx.rar FireFox 调试工具,需要的下