Firebug是由Joe Hewitt開(kāi)發(fā)的、基于Firefox的一個(gè)擴(kuò)展,是目前最好的Web開(kāi)發(fā)調(diào)試工具。它可以在客戶端實(shí)時(shí)編輯、調(diào)試和檢測(cè)任何頁(yè)面的CSS、HTML和JavaScript。
firebug為你的 firfox 集成了瀏覽網(wǎng)頁(yè)的同時(shí)隨手可得的豐富開(kāi)發(fā)工具。你可以對(duì)任何網(wǎng)頁(yè)的 CSS、HTML和 JavaScript 進(jìn)行實(shí)時(shí)編輯、調(diào)試各監(jiān)控。
firebug用于剖析Web頁(yè)面內(nèi)部的細(xì)節(jié)層面的工具。
FirebugHTML查看和編輯、Javascript控制臺(tái)、網(wǎng)絡(luò)狀況監(jiān)視于一體,可以說(shuō)是web開(kāi)發(fā)人員必備擴(kuò)展之一。
用Firebug處理CSS:
當(dāng)CSS盒子之間沒(méi)有正確的對(duì)齊的時(shí)候,可能很難找到原因。這時(shí)候可以用Firebug來(lái)測(cè)量一下盒子的偏移、外邊距(margin)、內(nèi)邊距(padding)以及大。╯ize)。玩CSS,離不開(kāi)它!
在DOM標(biāo)簽中,每個(gè)HTML元素的style屬性揭示了該元素的所有CSS設(shè)置。你可以雙擊對(duì)這些設(shè)置進(jìn)行編輯。
對(duì)于那些Firefox不支持的CSS規(guī)則,F(xiàn)irebug會(huì)自動(dòng)隱藏。比如,F(xiàn)irebug會(huì)隱藏針對(duì)某些瀏覽器的CSS特定設(shè)置,以及一些它不支持的CSS3規(guī)則。所以,它會(huì)隱藏_height:25px;(下劃線是一個(gè)針對(duì)IE6的設(shè)置)和p:first-of-type {color: #ff0000;} (:first-of-type是一個(gè)CSS3規(guī)定的偽類(lèi),目前只有Safari 3支持)。但是,這也意味著,如果你恰巧發(fā)生了打字錯(cuò)誤,導(dǎo)致某些規(guī)則無(wú)法顯示,那么你只有使用其他編輯器顯示全部CSS內(nèi)容,找到你的錯(cuò)誤。
Firebug允許你關(guān)閉CSS中的某些語(yǔ)句,頁(yè)面會(huì)立刻反映相應(yīng)變化,你可以立刻查看效果。"關(guān)閉"一條語(yǔ)句的方法是,在該語(yǔ)句的左邊點(diǎn)擊,會(huì)出現(xiàn)一個(gè)紅色的禁止標(biāo)志。該語(yǔ)句就會(huì)變灰。再次點(diǎn)擊,該語(yǔ)句就會(huì)恢復(fù)。
Firebug允許你編輯CSS的屬性和屬性值。你只要對(duì)它們點(diǎn)擊,就能編輯。修改后的效果會(huì)立刻在瀏覽器窗口中顯示出來(lái)。這個(gè)特性最好的運(yùn)用,是在確定準(zhǔn)確定位的padding和margin時(shí),firebug允許你用方向鍵逐單位的增加。
Firebug允許你增加新的屬性和屬性值。增加方法是雙擊現(xiàn)有的selector,然后就會(huì)出現(xiàn)一個(gè)空白的屬性名輸入框,完成輸入后則會(huì)出現(xiàn)一個(gè)空白的屬性值。
DOM
DOM標(biāo)簽提供頁(yè)面上所有物體的所有屬性的信息。Firebug最酷的功能之一是,它可以動(dòng)態(tài)修改頁(yè)面,反映在瀏覽器窗口,但是如果使用瀏覽器自帶的查看源碼功能,你會(huì)發(fā)現(xiàn)源碼并沒(méi)有改變。
Javascript調(diào)試:
JavaScript profiler可以報(bào)告你的Javascript函數(shù)執(zhí)行所花的時(shí)間,因此你可以查看不同函數(shù)對(duì)速度的影響。使用這個(gè)功能的方法是,打開(kāi)console標(biāo)簽,然后點(diǎn)擊上面的Profile按鈕(上部的按鈕順序是"Inspect |Clear | Profile")。Firebug列出調(diào)用的所有函數(shù),及其所花的時(shí)間。你可以針對(duì)要測(cè)試的某個(gè)函數(shù),在其前部加上console.profile([title]),在其后部加上console.profileEnd()。
console標(biāo)簽的底部是命令行輸入,它以">>>"開(kāi)頭。如果命令行輸入有結(jié)果輸出,那么它會(huì)展示在上部的窗口。有一個(gè)詳細(xì)的命令行輸入API值得看一下。Firebug內(nèi)置console對(duì)象有幾種有用的方法可供調(diào)用,包括console.debug、console.info、console.warning、console.error等。如果這些方法產(chǎn)生了輸出結(jié)果,F(xiàn)irebug會(huì)提供一個(gè)鏈接,讓你查看相應(yīng)的代碼。
調(diào)試的另一個(gè)方法是設(shè)置斷點(diǎn)。Script標(biāo)簽允許你在任意行暫停執(zhí)行。單擊行號(hào),就會(huì)設(shè)置一個(gè)斷點(diǎn)。右擊行號(hào),就可以設(shè)置一個(gè)斷點(diǎn)出現(xiàn)的條件,只有當(dāng)條件為真時(shí),程序才會(huì)暫停執(zhí)行。右面還有一個(gè)watch窗口,可以查看當(dāng)前變量的值。
AJAX:
前面已經(jīng)提到,F(xiàn)irebug可以捕捉頁(yè)面的動(dòng)態(tài)內(nèi)容和其他DOM變化。如果你打開(kāi)這個(gè)示例文件,點(diǎn)擊頁(yè)面上的鏈接后,在瀏覽器中查看源碼,你會(huì)發(fā)現(xiàn)什么也沒(méi)有改變,源碼中依然包含那個(gè)鏈接。但是,如果你在Firebug中查看源碼,你會(huì)發(fā)現(xiàn)DOM已經(jīng)發(fā)生了變化,"Hello World"已經(jīng)被包括在內(nèi)了。這就是Firebug的核心功能之一,沒(méi)有它,AJAX的請(qǐng)求和回應(yīng)就是不可見(jiàn)的。有了它,你可以看到送出的和收到的文本,已經(jīng)相應(yīng)的頭信息。在Net標(biāo)簽中,你還能監(jiān)控每個(gè)請(qǐng)求/回應(yīng)各自所花費(fèi)的時(shí)間。
Net標(biāo)簽中的XHR功能,對(duì)查看AJAX操作特別有用。如果你點(diǎn)擊每個(gè)服務(wù)器端回應(yīng)前的加號(hào),你就會(huì)看到服務(wù)器端回應(yīng)的頭信息和內(nèi)容。
當(dāng)通過(guò)XMLHttpRequest對(duì)象向服務(wù)器端發(fā)出一個(gè)請(qǐng)求時(shí),F(xiàn)irebug會(huì)記錄請(qǐng)求的POST或GET內(nèi)容,以及回應(yīng)的頭信息和內(nèi)容。使用Net標(biāo)簽中的XHR功能,就可以看到這些內(nèi)容。它會(huì)列出所有服務(wù)器的回應(yīng),以及所花費(fèi)的時(shí)間。點(diǎn)擊前面的+號(hào),如果是GET請(qǐng)求,會(huì)顯示三個(gè)標(biāo)簽;如果是POST請(qǐng)求,會(huì)顯示4個(gè)標(biāo)簽:
Params: 顯示請(qǐng)求URL中所包含的name/value對(duì)。
Headers: 顯示請(qǐng)求和回應(yīng)的頭信息。
Response: 顯示實(shí)際從服務(wù)器收到的信息。
Post:顯示從通過(guò)POST請(qǐng)求,送到服務(wù)器的信息。(此項(xiàng)GET請(qǐng)求不包括。)
這四個(gè)標(biāo)簽對(duì)編寫(xiě)和調(diào)試程序很有用。檢查POST和Params標(biāo)簽,確定你的請(qǐng)求被正確地發(fā)出了。檢查Response標(biāo)簽查看返回的格式,確定相應(yīng)的Javascript處理函數(shù)應(yīng)該如何編寫(xiě)。