很多Web前臺(tái)開(kāi)發(fā)者都喜歡這種瀏覽器自帶的開(kāi)發(fā)者工具,這對(duì)前臺(tái)設(shè)計(jì)、代碼調(diào)試很大幫助的。
Chrome瀏覽器得益于其優(yōu)秀的V8解釋器,javascript執(zhí)行速度和內(nèi)存占有率表現(xiàn)非常優(yōu)秀。對(duì)于html+css+javascript前臺(tái)技術(shù)的學(xué)習(xí)或者開(kāi)發(fā),瀏覽器developer tool的使用時(shí)必不可少的,也能極大的提高學(xué)習(xí)或者開(kāi)發(fā)效率。本文根據(jù)版本 23.0.1271.10。在window下,開(kāi)啟developer tool的快捷鍵為F12。
1 Developer tool功能結(jié)構(gòu)
Developer tool的功能欄有8個(gè),分別是標(biāo)簽、資源、網(wǎng)絡(luò)、源碼、時(shí)間軸、性能、監(jiān)察和顯示(命令行)。
2 Element panel
2.1 Element控制面板基本功能
Element控制面板能夠讓你查看所有的DOM tree中的內(nèi)容,可以根據(jù)html內(nèi)容找到頁(yè)面中的元素或者根據(jù)頁(yè)面中的定位標(biāo)簽,同時(shí)可以改變DOM的內(nèi)容。由javascript代碼產(chǎn)生的標(biāo)簽,也只能通過(guò)這種方式查看了(在你的IDE中無(wú)法看到)。
Element控制面板
如上圖所示,我選中
選元素找標(biāo)簽功能
我們也可以對(duì)里面的內(nèi)容進(jìn)行臨時(shí)性修改,如剛才找到的百度一下標(biāo)簽中的value改成“調(diào)試一下”后馬上在頁(yè)面中相應(yīng)顯示。
臨時(shí)修改內(nèi)容
2.2 右側(cè)功能欄
2.2.1 style查看
使用css時(shí),存在著樣式覆蓋等問(wèn)題,有的時(shí)候顯示的樣式可能出乎你的意料,或者對(duì)元素的大小位置(特別是窗口)的查看。同時(shí),我們也可以在這里進(jìn)行臨時(shí)修改,在頁(yè)面中反應(yīng)(真正的所見(jiàn)即所得,不是別的IDE所能替代的)。
修改樣式或大小
2.2.2 標(biāo)簽注冊(cè)事件查看
如果你想知道“百度一下”這個(gè)按鈕注冊(cè)了哪些功能,或者鼠標(biāo)點(diǎn)擊時(shí)執(zhí)行了哪個(gè)javascript函數(shù),就可以通過(guò)這個(gè)功能實(shí)現(xiàn)了。
選中百度一下標(biāo)簽,定位keydown事件,找到對(duì)應(yīng)的執(zhí)行函數(shù)
2.2.3 查找功能
Ctrl+F可以調(diào)出查找,查找你想要的內(nèi)容,非常實(shí)用。
3 資源控制面板
資源控制面板包括了這個(gè)頁(yè)面中下載下來(lái)的所有的資源,同時(shí)也包括本地的cookie,還有html5中l(wèi)ocal storage等高級(jí)功能。
資源查看面板
4 網(wǎng)絡(luò)控制面板
網(wǎng)絡(luò)控制面板在兩個(gè)方面還是非常還用的,一個(gè)是發(fā)現(xiàn)圖片(css、js等)加載不了,可以通過(guò)network查看它請(qǐng)求的位置。第二個(gè),是調(diào)試ajax時(shí),可以查看它的請(qǐng)求和獲取。如百度輸入框中,輸入關(guān)鍵字后會(huì)自動(dòng)顯示熱門內(nèi)容,這顯然是一個(gè)ajax的使用。
網(wǎng)絡(luò)加載顯示
查看http請(qǐng)求和獲得的內(nèi)容
5 源碼控制面板(js調(diào)試)
Javascript的調(diào)試,基本上是通過(guò)源碼控制面板和命令行配合進(jìn)行的。
5.1 Beautiful javascript
網(wǎng)上的js一般是壓縮過(guò)的,閱讀壓縮過(guò)的javascript肯定是不是人能進(jìn)行的,更別說(shuō)添加斷點(diǎn)了。在 Scripts 面板下面有個(gè) Pretty print 按鈕(這種符號(hào) {}), 點(diǎn)擊會(huì)將壓縮 js 文件格式化縮進(jìn)規(guī)整的文件, 這時(shí)候在設(shè)定斷點(diǎn)可讀性就大大提高了。
調(diào)整前
調(diào)整后
5.2 代碼出錯(cuò)定位
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> 2 3 <html xmlns="http://www.w3.org/1999/xhtml"> 4 5 <head> 6 7 <title>javascript add</title> 8 9 <script type="text/javascript">10 11 var div=document.getElementByd("a");12 13 function calSum(){14 15 var a=parseInt(document.getElementById("num1").value);16 17 var b=parseInt(document.getElementById("num2").value);18 19 document.getElementById("num3").value=(a+b);20 21 }22 23 </script>24 25 </head>26 27 <body>28 29 <input type="text" id="num1"/>add<input type="text" id="num2"/>30 31 <input type="button" id="btnCal" onclick="calum()" value="equal"/><input type="text" id="num3"/>32 33 </body>34 35 </html>
上面的代碼中,紅色標(biāo)記部分顯然是錯(cuò)誤的,在IDE中有些錯(cuò)誤是檢查不出來(lái)的(特別是跟瀏覽器有關(guān)的部分)。加載該頁(yè)面后,可以在顯示欄看到報(bào)錯(cuò)信息,然后直接定位至出錯(cuò)點(diǎn)。
Javascript錯(cuò)誤位置定位
5.3 添加斷點(diǎn)及單步
5.3.1 斷點(diǎn)中斷
可以通過(guò)單擊左側(cè)側(cè)添加斷點(diǎn),并在右側(cè)顯示。也可以通過(guò)watch expression添加查看的變量。
我們添加了一個(gè)斷點(diǎn),如果在頁(yè)面上的操作執(zhí)行到斷點(diǎn)處,就會(huì)在斷點(diǎn)處終止。然后,我們可以通過(guò)右側(cè)最上面的按鈕調(diào)試,與VS等IDE的調(diào)試非常相近。Call stack是顯示函數(shù)的調(diào)用棧,在調(diào)試大規(guī)模的javascript程序是非常有用。
單步調(diào)試
5.3.2 頁(yè)面中斷調(diào)試
除了給設(shè)定常規(guī)斷點(diǎn)外, 還可以在某一特定事件發(fā)生時(shí)中斷(不針對(duì)元素) , 在 Scripts 面板右側(cè), 有個(gè) Event Listener Breakpoints, 這里列出了支持的所有事件, 不僅 click, keyup 等事件, 還支持 Timer(在 setTimeout setInterval 處理函數(shù)開(kāi)始執(zhí)行時(shí)中斷), onload, scroll 等事件。
6 顯示行(命令行)
命令行對(duì)于我們這種菜鳥(niǎo)有一個(gè)非常有用的地方,對(duì)于javascript提供的API或者API的功能不是非常熟悉。這個(gè)時(shí)候命令行就成為我們?cè)囼?yàn)最好的地方。如,我們想查看document下面有哪些函數(shù),我們就可以在命令行中輸入,然后選中并嘗試。對(duì)于jquery等開(kāi)源框架的學(xué)習(xí),這種方式也非常高效,學(xué)代碼還是得跑起來(lái)才行。
我們可以在命令行里面直接改變內(nèi)存中的內(nèi)容,對(duì)于小函數(shù)我就可以用這樣的方式直接替換。
我們按enter是對(duì)輸入的內(nèi)容運(yùn)行,如果要換行需要按shift+enter。在這里面,我們直接在命令行里面里面講calSum函數(shù)覆蓋掉,a+b換成了a*b。運(yùn)行結(jié)果如下所示。
命令行使用
運(yùn)行結(jié)果
7 性能查看控制面板(profiles)
這個(gè)控制面板允許我們查看函數(shù)運(yùn)行時(shí)CPU占有率,還有內(nèi)存占有率。這能夠幫助我們優(yōu)化代碼,查看代碼性能(內(nèi)存還能查看閉包泄露等)。
按start可以分析,現(xiàn)在的內(nèi)存占有率。進(jìn)行操作后,再得到第二份內(nèi)存分析報(bào)告,這樣我們就能通過(guò)內(nèi)存變化來(lái)進(jìn)行分析了。在底欄,還有對(duì)比、總結(jié)等選項(xiàng)。
第一份內(nèi)存分析報(bào)告
第二份內(nèi)存分析報(bào)告
8 其他
在調(diào)試過(guò)程中,可能還會(huì)受別的因數(shù)影響,如迅雷下載插件xl.js等,在開(kāi)發(fā)時(shí)把這些東西禁用掉。Firefox瀏覽器的調(diào)試也非常強(qiáng)大,在以前開(kāi)發(fā)工程中通常通過(guò)兩個(gè)瀏覽器調(diào)試器的配合使用進(jìn)行。當(dāng)然,如果工程要求比較高,肯定要在不同瀏覽器下分別調(diào)試。