10分鐘學會前端調(diào)試利器——FireBug

作者:惟吾德馨‘
原文地址:http://www.cnblogs.com/allenben/p/4757274.html

概述

FireBug是一個用于網(wǎng)站前端開發(fā)的工具,它是FireFox瀏覽器的一個擴展插件。它可以用于調(diào)試JavaScript、查看DOM、分析CSS福侈、監(jiān)控網(wǎng)絡(luò)流量以及進行Ajax交互等。它提供了幾乎前端開發(fā)需要的全部功能戳葵。

官方網(wǎng)站:www.getfirebug.com

如何獲取Firebug邻梆?

因為它是Firefox瀏覽器的一個擴展插件,所以首先需要下載Firefox瀏覽器。讀者可以訪問www.mozilla.com下載并安裝Firefox瀏覽器。安裝完成后用它訪問這里

進入下圖所示頁面。點擊"添加到Firefox"郁惜,然后點擊"立即安裝",最后重新啟動Firefox瀏覽器即可完成安裝包蓝。

主面板

安裝完成之后绳泉,在Firefox瀏覽器的地址后方就會有一個小蟲子的圖標四苇。單擊該圖標后即可展開Firebug的控制臺,也可以通過快捷鍵<F12>來打開控制臺苫纤。使用Ctrl+F12快捷鍵可以使Firebug獨立打開一個窗口而不占用Firefox頁面底部的空間。

從上圖中可以看出祝高,F(xiàn)irebug包括7個面板:

  • 控制臺面板:用于記錄日志恭金、概覽、錯誤提示和執(zhí)行命令行褂策,同時也用于Ajax的調(diào)試横腿;
  • HTML面板:用于查看HTML元素,可以實時地編輯HTML和改變CSS樣式斤寂,它包括3個子面板耿焊,分別是樣式、布局和DOM面板遍搞;
  • CSS面板:用于查看所有頁面上的CSS文件罗侯,可以動態(tài)地修改CSS樣式,由于HTML面板中已經(jīng)包含了一個CSS面板溪猿,因此該面板將很少用到钩杰;
  • 腳本面板:用于顯示Javascript文件及其所在的頁面,也可以用來顯示Javascript的Debug調(diào)試诊县,包含3個子面板讲弄,分別是監(jiān)控、堆棧和斷點依痊;
  • DOM面板:用于顯示頁面上的所有對象避除;
  • 網(wǎng)絡(luò)面板:用于監(jiān)視網(wǎng)絡(luò)活動,可以幫助查看一個頁面的載入情況胸嘁,包括文件下載所占用的時間和文件下載出錯等信息瓶摆,也可以用于監(jiān)視Ajax行為;
  • Cookies面板:用于查看和調(diào)整cookie(需要安裝下文資源中所提到的Firecookie)性宏。

控制臺面板

1.控制臺面板概覽此面板可以用于記錄日志群井,也可以用于輸入腳本的命令行。

2.記錄日志Firebug提供如下幾個常用的記錄日志的函數(shù):

  • console.log簡單的記錄日志毫胜;
  • console.debug記錄調(diào)試信息书斜,并且附上行號的超鏈接诬辈;
  • console.error在消息前顯示錯誤圖標,并且附上行號的超鏈接菩佑;
  • console.info在消息前顯示消息圖標,并且附上行號的超鏈接凝化;
  • console.warn在纖細錢顯示警告圖標稍坯,并且附行號的超鏈接。

在空白的html頁面中搓劫,向<body>標簽中加入<script>標簽瞧哟,代碼如下:

<script 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 warn message');
</script>

執(zhí)行代碼后可以在Firebug中看到下圖所示的結(jié)果,以前習慣了用alert來調(diào)試程序枪向,然而在Firebug下可以使用console勤揩。

3.格式化字符串輸出和多變量輸出

這個功能類似于C語言中的語法,可以在console記錄日志的方法里使用秘蛔。
%s:字符串  %d,%i:數(shù)字  %f:浮點數(shù)  %o:鏈接對象
同時陨亡,這幾個函數(shù)支持多個變量。代碼如下:

<script type="text/javascript">
  var kid="孩子",count="3",man="Allen";
  var sport1="籃球",sport2="羽毛球",sport3="網(wǎng)球";
  console.log("%d個%s在玩游戲",count,kid);
  console.log(count,"個",kid,"在玩游戲");
  console.log("%s擅長的運動有:",man,sport1,sport2,sport3);
</script>

運行代碼后效果如下圖所示:

Firebug控制臺還提供了其他功能深员,例如檢測函數(shù)執(zhí)行時間负蠕、消息分組、測試驅(qū)動倦畅、跟蹤遮糖、計數(shù)以及查看Javascript概況等。更多資料可以訪問這里叠赐。

4.面板內(nèi)的子菜單

控制臺面板內(nèi)有一排子菜單欲账,分別是清除、保持芭概、概況赛不、全部等。

“清除”用于清除控制臺中的內(nèi)容罢洲《砩荆“保持”則是把控制臺中的內(nèi)容保存,即使刷新了依然還存在奏路〕胍“全部”則是顯示全部的信息。后面的“錯誤”鸽粉、“警告”斜脂、“消息”、“調(diào)試信息”触机、“Cookies”菜單則是對所有進行了一個分類帚戳。

“概況”菜單用于查看函數(shù)的性能玷或。下面通過一個例子來演示,代碼如下:

<button type="button" id="btn1">執(zhí)行循環(huán)1</button>
<button type="button" id="btn2">執(zhí)行循環(huán)2</button>
<button type="button" id="btn3">執(zhí)行循環(huán)3</button>
<script type="text/javascript">
    var f1=function(){
        for(var i =0;i<1000;i++)
            for(var j=0;j<1000;j++);
    }
    function f2(){
        for(var i =0;i<1000;i++)
            for(var j=0;j<1000;j++);
    }
    document.getElementById("btn1").onclick=f1;
    document.getElementById("btn2").onclick=f2;
    document.getElementById("btn3").onclick=function(){
        for(var i =0;i<1000;i++)
            for(var j=0;j<1000;j++);
    }
</script>

打開頁面片任,顯示三個按鈕:

打開頁面后偏友,先啟用Firebug控制臺面板,然后單擊“概況”菜單对供,如下圖所示:

從上圖中可以看到位他,出現(xiàn)了一行字,“概況收集中产场。再次點擊“概況”查看結(jié)果鹅髓。”京景,接著窿冯,依次單擊“執(zhí)行循環(huán)1”、“執(zhí)行循環(huán)2”确徙、“執(zhí)行循環(huán)3”三個按鈕各一次醒串,并再次單擊“概況菜單”,即可看到如下圖所示結(jié)果:

可以看到Firebug顯示出了非常詳細的報告鄙皇。包括每個函數(shù)的函數(shù)名厦凤、調(diào)用次數(shù)、占用時間的百分比育苟、占用時間较鼓、時間、平均時間违柏、最小時間博烂、最大時間以及所在的文件的行數(shù)等信息。

5.Ajax調(diào)試

控制臺面板也可用于Ajax調(diào)試漱竖,在一定程度上可以取代網(wǎng)絡(luò)面板禽篱。例如我打開一個頁面,可以在Firebug控制臺看到本次Ajax的Http請求頭信息和服務(wù)器響應(yīng)頭信息馍惹。如下圖躺率,它會顯示出本次使用的Ajax的GET方法、地址万矾、耗時以及調(diào)用Ajax請求的代碼行數(shù)悼吱。最重要的是有5個標簽,即參數(shù)良狈、頭信息后添、響應(yīng)、HTML薪丁、Cookies.第一個標簽用于查看傳遞給服務(wù)器的參數(shù)遇西;第二個標簽用于查看響應(yīng)頭信息和請求頭信息馅精;第三個標簽用于查看服務(wù)器返回的內(nèi)容;第四個標簽則是查看服務(wù)器返回的HTML結(jié)構(gòu)粱檀;第五個標簽用于查看相應(yīng)的Cookies洲敢。

如果看不到任何信息的出現(xiàn),可能是將此功能關(guān)閉了茄蚯,可以單擊“控制臺”旁邊的下拉箭頭压彭,將“顯示XMLHttpRequests”前面的勾勾選上即可。

HTML面板

1.查看和修改HTML代碼

Html面板的強大之處就是能查看和修改HTML代碼第队,而且這些代碼都是經(jīng)過格式化的哮塞。下面以我的一個瀏覽器主頁來做講解刨秆。

在HTML控制臺的左側(cè)可以看到整個頁面當前的文檔結(jié)構(gòu)凳谦,可以通過單擊“+”來展開。當單擊相應(yīng)的元素時衡未,右側(cè)面板中就會顯示出當前元素的樣式尸执、布局以及DOM信息。而當光標移動到HTML樹中相應(yīng)元素上時缓醋,上面頁面中相應(yīng)的元素將會被高亮顯示如失。
例如,將光標移動到一個<P>標簽上送粱,顯示效果如下圖所示:

在頁面中藍色部分表示元素本身褪贵,紫色表示padding部分,黃色表示margin部分抗俄。同時可以實時地添加脆丁、修改和刪除HTML節(jié)點以及屬性,如下圖所示动雹。另外槽卫,單擊script節(jié)點還可以直接查看腳本,此處的腳本無論是內(nèi)嵌在HTML中還是外部導入的胰蝠,都可以查看到歼培。同樣這也適用于<style>標簽內(nèi)嵌或者導入的CSS樣式和動態(tài)創(chuàng)建HTML代碼。

2.查看(Inspect)

利用查看(Inspect)功能茸塞,可以快速地尋找到某個元素的HTML結(jié)構(gòu)躲庄,如圖:

當單擊"Inspect"按鈕后,用鼠標在網(wǎng)頁上選中一個元素時钾虐,元素會被一個藍色的框框住读跷,同時下面的HTML面板中相應(yīng)的HTML樹也會展開并且高亮顯示。再次單擊后即可退出該模式禾唁,并且底部的HTML樹也保持在這個狀態(tài)效览。通過這個功能无切,可以快速尋找頁面內(nèi)的元素,調(diào)試和查找相應(yīng)代碼非常方便丐枉。刷新網(wǎng)頁后哆键,頁面顯示的仍然是用Inspect選中的區(qū)域。

HTML面板下方的“編輯”按鈕可以用于直接編輯選中的HTML代碼瘦锹,而后面顯示的是當前元素在整個DOM中的結(jié)構(gòu)路徑籍嘹。

3.查看DOM中被腳本更改的部分

通過JavaScript來改變樣式屬性的值可以完成一些動畫效果。打開頁面后弯院,利用查看(Inspect)功能來選擇相應(yīng)的HTML代碼辱士,例如,選中“要聞”听绳,如下圖所示:

單擊“國內(nèi)”標簽后颂碘,出現(xiàn)下圖所示效果:

通過上圖可以看出,HTML查看器會將頁面上改變的內(nèi)容頁記錄下來椅挣,并以黃色高亮表示头岔。有了這個功能,網(wǎng)頁的暗箱操作將徹底成為歷史鼠证。我們可以使用該功能查看其它網(wǎng)站的動畫效果是如何實現(xiàn)的峡竣。

4.查看和修改元素的樣式

在右側(cè)的樣式面板中,展示了此元素當前所有的樣式量九。所有的樣式都可以實時地禁用和修改适掰,如下圖所示,通過在"text-align:center"前單擊會出現(xiàn)禁用的標記荠列,這樣就可以禁用此規(guī)則类浪。通過直接在樣式value值上單擊就可以修改。

單擊“布局”面板即可看到此元素具體的布局屬性弯予,這是一個標準的盒模型戚宦。通過“布局”面板,可以很容易地看到元素的偏移量锈嫩、外邊距受楼、邊框、內(nèi)邊距和元素的高度呼寸、寬度等信息艳汽,如下圖所示:

5.查看DOM的信息

單擊“DOM”面板后可以看到此元素的詳細的DOM信息以及函數(shù)和事件,如下圖所示:

CSS对雪、DOM和網(wǎng)絡(luò)面板

這3個面板相對于前面2個面板比較次要河狐,CSS和DOM面板與HTML面板中右側(cè)的面板功能相似,但不如HTML面板靈活,因此一般使用得很少馋艺。

CSS面板特有的一個功能就是可以分別詳細查看頁面中內(nèi)嵌以及動態(tài)導入的樣式栅干。如下圖所示:

單擊CSS面板后就可以分別查看相應(yīng)的樣式。此處展開的樣式都是經(jīng)過格式化的捐祠,適合于學習CSS的代碼格式和規(guī)范碱鳞。

而在網(wǎng)絡(luò)面板中,相對有一些強大的功能踱蛀,例如打開某個網(wǎng)站首頁窿给,F(xiàn)irebug顯示效果如下圖所示:

該頁面可以監(jiān)視每一項元素的加載情況,包括腳本率拒,圖片等的大小以及加載用時等崩泡,對于頁面優(yōu)化有著極其重要的意義。

此外猬膨,頂部還可以分類查看元素的HTML角撞、CSS、JS等的加載情況寥掐,使分析更加靈活靴寂。

腳本面板

腳本面板不僅可以查看頁面內(nèi)的腳本磷蜀,而且還有強大的調(diào)試功能召耘。

在腳本面板的右側(cè)有“監(jiān)控”、“堆椇致。”和“斷點”三個面板污它,利用Firebug提供的設(shè)置斷掉的功能,可以很方便地調(diào)試程序庶弃,如下圖所示:

1.靜態(tài)斷點
例如test.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>
    <script type="text/javascript">
        function doSomething(){
            var lab = document.getElementById('messageLabel');
            arrs=[1,2,3,4,5,6,7,8,9];
            for(var arr in arrs){
                lab.innerHTML+=arr+"<br />"
            }
        }
    </script>
</head>
<body>
    <div>
        <div id="messageLabel"></div>
        <input type="button" value="Click Here" onClick="doSomething();"/>
    </div>
</body>
</html>

運行代碼后可以看到下圖所示效果。圖中加粗并有顏色的行號表示此處為JavaScript代碼歇攻,可以在此處設(shè)置斷點固惯。比如在第6行這句代碼前面單擊一下,那它前面就會出現(xiàn)一個紅褐色的圓點缴守,表示此處已經(jīng)被設(shè)置了斷點葬毫。此時,在右側(cè)斷點面板的斷點列表中就出現(xiàn)了剛才設(shè)置的斷點屡穗。如果想暫時禁用某個斷點贴捡,可以在斷點列表中去掉某個斷點的前面的復選框中的勾,那么此時左側(cè)面板中相應(yīng)的斷點就從紅褐色變成了紅灰褐色了村砂。

設(shè)置完斷點之后烂斋,我們就可以調(diào)試程序了。單擊頁面中的“Click Here”按鈕,可以看到腳本停止在用談黃色底色標出的那一行上汛骂。此時用鼠標移動到某個變量上即可顯示此時這個變量的value罕模。顯示效果如下:

此時JavaScript內(nèi)容上方的四個按鈕已經(jīng)變得可用了。它們分別代表“繼續(xù)執(zhí)行”帘瞭、“單步進入”手销、“單步跳過”和“單步退出”。

  • 繼續(xù)執(zhí)行<F8>當通過斷點來停止執(zhí)行腳本時图张,單擊<F8>就會恢復執(zhí)行腳本锋拖。
  • 單步進入<F11>允許跳到頁面中的其他函數(shù)內(nèi)部。
  • 單步跳過<F10>單擊<F10>來直接跳過函數(shù)的調(diào)用即跳到return之后祸轮。
  • 單步退出<shift+F11>允許恢復腳本的執(zhí)行兽埃,直到下一個斷點為止。

單擊“單步進入”按鈕适袜,代碼會跳到下一行柄错,顯示效果如下:

從上圖可以看出,當鼠標移動到“l(fā)ab”變量上時苦酱,就可以顯示出它的內(nèi)容是一個DOM元素售貌,即“div#messageLabel”。

此時將右側(cè)面板切換到“監(jiān)控”面板疫萤,這里列出了幾個變量颂跨,包括“this”指針的指向以及“lab”變量。單擊“+”可以看到詳細的信息扯饶。顯示如下:

2.條件斷點

在“lab.innerHTML+=arr+"<br />"”這行代碼前面的序號上單擊鼠標右鍵恒削,就可以出現(xiàn)設(shè)置條件斷點的輸入框。在該框內(nèi)輸入“arr==5”尾序,然后回車確認钓丰,顯示效果如下:

最后單擊頁面的“Click Here”按鈕∶勘遥可以發(fā)現(xiàn)携丁,腳本在“arr==5”這個表達式為真時停下了,因此“5
”以及之后的數(shù)字沒有顯示到頁面中兰怠。下圖分別是正常效果和設(shè)置了條件斷點之后的顯示效果對比:

資源

快捷鍵:<F12>可以快速開啟Firebug梦鉴,如果想獲取完整的快捷鍵列表,可以訪問這里痕慢。

問題:如果安裝過程中遇到了困難尚揣,可以查看Firebug的Q&A

Firebug插件: Firebug除了本身強大的功能之外,還有基于Firebug的插件掖举,它們用于擴充Firebug的功能快骗。比如Google公司開發(fā)Page Speed插件,開發(fā)人員可以使用它來評估他們網(wǎng)頁的性能,并獲得有關(guān)如何改進性能的建議方篮。Yahoo公司開發(fā)的用于檢測頁面整體性能的YSlow和用于調(diào)試PHP的FirePHP名秀。還有用于調(diào)試Cookie的Firecookie等。

總結(jié)

通過本文的學習藕溅,讀者可以掌握Firebug的基本功能匕得。Firebug已經(jīng)逐漸成為一個調(diào)試平臺,而不僅僅是一個簡單的Firefox擴展插件巾表。學好Firebug能給以后的學習和工作提供一定的幫助汁掠。

參考文獻:《鋒利的JQuery(第2版)》

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市集币,隨后出現(xiàn)的幾起案子考阱,更是在濱河造成了極大的恐慌,老刑警劉巖鞠苟,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件乞榨,死亡現(xiàn)場離奇詭異,居然都是意外死亡当娱,警方通過查閱死者的電腦和手機吃既,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來跨细,“玉大人鹦倚,你說我怎么就攤上這事《笮” “怎么了申鱼?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵愤诱,是天一觀的道長云头。 經(jīng)常有香客問我,道長淫半,這世上最難降的妖魔是什么溃槐? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮科吭,結(jié)果婚禮上昏滴,老公的妹妹穿的比我還像新娘。我一直安慰自己对人,他們只是感情好谣殊,可當我...
    茶點故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著牺弄,像睡著了一般姻几。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天蛇捌,我揣著相機與錄音抚恒,去河邊找鬼。 笑死络拌,一個胖子當著我的面吹牛俭驮,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播春贸,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼混萝,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了萍恕?” 一聲冷哼從身側(cè)響起譬圣,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎雄坪,沒想到半個月后厘熟,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡维哈,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年绳姨,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片阔挠。...
    茶點故事閱讀 38,137評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡飘庄,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出购撼,到底是詐尸還是另有隱情跪削,我是刑警寧澤,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布迂求,位于F島的核電站碾盐,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏揩局。R本人自食惡果不足惜毫玖,卻給世界環(huán)境...
    茶點故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望凌盯。 院中可真熱鬧付枫,春花似錦、人聲如沸驰怎。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽县忌。三九已至掂榔,卻和暖如春址儒,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背衅疙。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工莲趣, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人饱溢。 一個月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓喧伞,卻偏偏與公主長得像,于是被迫代替她去往敵國和親绩郎。 傳聞我的和親對象是個殘疾皇子潘鲫,可洞房花燭夜當晚...
    茶點故事閱讀 42,901評論 2 345

推薦閱讀更多精彩內(nèi)容