1. 程式人生 > >Chrome developer tool介紹(javascript除錯)

Chrome developer tool介紹(javascript除錯)

Chrome瀏覽器得益於其優秀的V8直譯器,javascript執行速度和記憶體佔有率表現非常優秀。對於html+css+javascript前臺技術的學習或者開發,瀏覽器developer tool的使用時必不可少的,也能極大的提高學習或者開發效率。本文根據版本 23.0.1271.10。在window下,開啟developer tool的快捷鍵為F12。

1 Developer tool功能結構

 

  Developer tool的功能欄有8個,分別是標籤、資源、網路、原始碼、時間軸、效能、監察和顯示(命令列)。

2 Element panel

2.1 Element控制面板基本功能

  Element控制面板能夠讓你檢視所有的DOM tree中的內容,可以根據html內容找到頁面中的元素或者根據頁面中的定位標籤,同時可以改變DOM的內容。由javascript程式碼產生的標籤,也只能通過這種方式查看了(在你的IDE中無法看到)。

Element控制面板

      如上圖所示,我選中<div id=”fm”>標籤之後,在頁面中顯示的對應的元素就會選中。如果,我現在要定位百度一下這個按鈕,我可以通過左下角的放大鏡,在頁面中選中百度一下,DOM中也會把對應的標籤給你找出來。這個功能在除錯時絕對是利器。最下面顯示的是現在選中標籤在DOM中的層次關係。

 

選元素找標籤功能

  我們也可以對裡面的內容進行臨時性修改,如剛才找到的百度一下標籤中的value改成“除錯一下”後馬上在頁面中相應顯示。

 

臨時修改內容

2.2 右側功能欄

2.2.1 style檢視

  使用css時,存在著樣式覆蓋等問題,有的時候顯示的樣式可能出乎你的意料,或者對元素的大小位置(特別是視窗)的檢視。同時,我們也可以在這裡進行臨時修改,在頁面中反應(真正的所見即所得,不是別的IDE所能替代的)。

 

修改樣式或大小

2.2.2 標籤註冊事件檢視

  如果你想知道“百度一下”這個按鈕註冊了哪些功能,或者滑鼠點選時執行了哪個javascript函式,就可以通過這個功能實現了。

 

選中百度一下標籤,定位keydown事件,找到對應的執行函式

2.2.3 查詢功能

  Ctrl+F可以調出查詢,查詢你想要的內容,非常實用。

3 資源控制面板

  資源控制面板包括了這個頁面中下載下來的所有的資源,同時也包括本地的cookie,還有html5中local storage等高階功能。

 

資源檢視面板

4 網路控制面板

  網路控制面板在兩個方面還是非常還用的,一個是發現圖片(css、js等)載入不了,可以通過network檢視它請求的位置。第二個,是除錯ajax時,可以檢視它的請求和獲取。如百度輸入框中,輸入關鍵字後會自動顯示熱門內容,這顯然是一個ajax的使用。

 

網路載入顯示

檢視http請求和獲得的內容

5 原始碼控制面板(js除錯)

  Javascript的除錯,基本上是通過原始碼控制面板和命令列配合進行的。

5.1 Beautiful javascript

  網上的js一般是壓縮過的,閱讀壓縮過的javascript肯定是不是人能進行的,更別說新增斷點了。在 Scripts 面板下面有個 Pretty print 按鈕(這種符號 {}), 點選會將壓縮 js 檔案格式化縮排規整的檔案, 這時候在設定斷點可讀性就大大提高了。

 

調整前

 

調整後

5.2 程式碼出錯定位

複製程式碼
 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>
複製程式碼

  上面的程式碼中,紅色標記部分顯然是錯誤的,在IDE中有些錯誤是檢查不出來的(特別是跟瀏覽器有關的部分)。載入該頁面後,可以在顯示欄看到報錯資訊,然後直接定位至出錯點。

 

Javascript錯誤位置定位

5.3 新增斷點及單步

5.3.1 斷點中斷

  可以通過單擊左側側新增斷點,並在右側顯示。也可以通過watch expression新增檢視的變數。

 

  我們添加了一個斷點,如果在頁面上的操作執行到斷點處,就會在斷點處終止。然後,我們可以通過右側最上面的按鈕除錯,與VS等IDE的除錯非常相近。Call stack是顯示函式的呼叫棧,在除錯大規模的javascript程式是非常有用。

 

單步除錯

5.3.2 頁面中斷除錯

  除了給設定常規斷點外, 還可以在某一特定事件發生時中斷(不針對元素) , 在 Scripts 面板右側, 有個 Event Listener Breakpoints, 這裡列出了支援的所有事件, 不僅 click, keyup 等事件, 還支援 Timer(在 setTimeout setInterval 處理函式開始執行時中斷), onload, scroll 等事件。

6 顯示行(命令列)

  命令列對於我們這種菜鳥有一個非常有用的地方,對於javascript提供的API或者API的功能不是非常熟悉。這個時候命令列就成為我們試驗最好的地方。如,我們想檢視document下面有哪些函式,我們就可以在命令列中輸入,然後選中並嘗試。對於jquery等開源框架的學習,這種方式也非常高效,學程式碼還是得跑起來才行。

 

 

  我們可以在命令列裡面直接改變記憶體中的內容,對於小函式我就可以用這樣的方式直接替換。

  我們按enter是對輸入的內容執行,如果要換行需要按shift+enter。在這裡面,我們直接在命令列裡面裡面講calSum函式覆蓋掉,a+b換成了a*b。執行結果如下所示。

 

命令列使用

 

執行結果

7 效能檢視控制面板(profiles)

  這個控制面板允許我們檢視函式執行時CPU佔有率,還有記憶體佔有率。這能夠幫助我們優化程式碼,檢視程式碼效能(記憶體還能檢視閉包洩露等)。

 

  按start可以分析,現在的記憶體佔有率。進行操作後,再得到第二份記憶體分析報告,這樣我們就能通過記憶體變化來進行分析了。在底欄,還有對比、總結等選項。

 

第一份記憶體分析報告

 

第二份記憶體分析報告

8 其他

  在除錯過程中,可能還會受別的因數影響,如迅雷下載外掛xl.js等,在開發時把這些東西禁用掉。Firefox瀏覽器的除錯也非常強大,在以前開發工程中通常通過兩個瀏覽器偵錯程式的配合使用進行。當然,如果工程要求比較高,肯定要在不同瀏覽器下分別除錯。

9 參考文獻