如何在ie裏面調試js

 今天,我想向大家介紹一下 IE 的調試工具,因爲經常聽到一些剛入門的 JavaScript 開發人員抱怨說,沒有好的 JavaScript 開發環境,沒有好用的調試器,沒有集成的 IDE 工具。2005 年,一個被稱做 Aptana<wbr> 的免費開源項目啓動了,但是直到 2006 年底,才爲人們所知。新年伊始,對於開發人員來說,這個 Ajax 開發環境無疑是個好消息。
本篇不想介紹這個新生兒,我只是想介紹一個被微軟藏着掖着,總也不放到明面兒上,讓大家都知道的工具—“Microsoft 腳本編輯器”。當 IE 被升級到 5.5 以上之後,那個所謂的“Windows Script Debugger”其實已經與 IE 的 JavaScript 開發不兼容了,許多對象的屬性值根本無法被正確的監視。但是做爲替代品,“Microsoft 腳本編輯器”恰恰可以彌補這個不足,它的強大,足以應付 IE 下網頁腳本的開發。這個工具被捆綁在“Microsoft Development Environment”環境中,如果你安裝有“Microsoft Visual Studio .NET”,或者“Microsoft Office XP(10.0)”以上的版本,你都可以使用這個腳本調試工具。由於這個工具是微軟自己開發的,所以運行效率很高,並且與 IE 的兼容性也是最好的。
因爲“Microsoft Visual Studio .NET”太大了,所以通過 Office 來安裝這個工具,就顯得特別有意義。安裝此工具的方法比較特殊,因爲它是通過“Office Word”來引導安裝的。下面,通過安裝過程的截圖,你可以瞭解到如何安裝這個工具。
</wbr><wbr>01.jpg</wbr><wbr>
</wbr><wbr>02.jpg</wbr><wbr>
</wbr><wbr>03.jpg</wbr><wbr>
</wbr><wbr>04.jpg</wbr><wbr>
</wbr><wbr>05.jpg</wbr><wbr>
</wbr><wbr>06.jpg</wbr><wbr>
</wbr><wbr>07.jpg</wbr><wbr>
</wbr><wbr>08.jpg</wbr><wbr>
完成上面那個的“Internet 選項”設置之後,關閉所有已經打開的 IE 窗口,然後再運行 IE。你會發現在 IE 的“查看”菜單下,多了一個“腳本調試程序”項,如下圖所示
</wbr><wbr>09.jpg</wbr><wbr>
至此,“Microsoft 腳本編輯器”便安裝完畢了。當你瀏覽的網頁出現腳本語法錯誤或實時運行錯誤時,瀏覽器將自動彈出如下的窗口,提示你是否調試此錯誤。
</wbr><wbr>10.jpg</wbr><wbr>
而當你沒有安裝此工具前,所有的腳本錯誤只能通過點擊瀏覽器狀態欄的左下角,彈出錯誤提示窗口來查看,而這顯然是“幼稚”的方法,起到的作用也如“盲人摸象”一般。
雖然這個工具可以用來解決腳本運行時的錯誤,但有時我們只想跟蹤程序的邏輯,或者熟悉 DOM 對象的 API。也許被跟蹤的代碼任何錯誤也沒有,或者我們只想看看在某一時刻,某個 DOM 對象的某個屬性是否能被訪問。在所有的語言調試環境中,通用的方法就是設置“斷點”,而這個工具對於“斷點”的支持不像 Firebug</wbr><wbr> 或 [url=https://addons.mozilla.org/firefox/216/]JavaScrip Debugger[/url] 那樣好,可以調出已經裝載在當前網頁中的任何腳本,以便隨時的添加斷點。所以,利用“Microsoft 腳本編輯器”動態地設置腳本斷點,來進行跟蹤調試是非常不方便的。對於這種情況,我們需要在代碼中人爲地製造一些斷點,達到方便調試的目的。比如,有如下的代碼片段
<script>    var person = {name: "Lewis", gender: "male", blogURL: "http://www.lewislv.org"};    var years = [2000, 2001, 2002, 2004, 2005, 2006];    person.employmentYears = years;</script>
以上是一段語法正確的 JavaScript 代碼。然而,初學者可能只是想了解對象是如何被實例化,代碼是如何被運行的。IE 的 JavaScript 解釋器提供了一個保留的 <wbr>debugger</wbr></wbr><wbr> 語句(VBScript 調試的等價關鍵字是 stop),它可以告訴瀏覽器調出調試程序,以此達到設置斷點的目的。對於上面的代碼,假設我想了解一下 person 對象和 years 數組的存儲結構,那麼我可以在代碼的入口處添加一條 debugger 語句,更改後的代碼片段如下
<script>    <wbr>debugger</wbr></wbr><wbr>    var person = {name: "Lewis", gender: "male", blogURL: "http://www.lewislv.org"};    var years = [2000, 2001, 2002, 2004, 2005, 2006];    person.employmentYears = years;</script>
當代碼在瀏覽器中被裝載並運行時,它會解釋 debugger 語句,彈出是否調試的窗口。同樣,我做了一些截圖,用來演示如何達到查看變量存儲結構的目的。
</wbr><wbr>11.jpg</wbr><wbr>
</wbr><wbr>12.jpg</wbr><wbr>
</wbr><wbr>13.jpg</wbr><wbr>
</wbr><wbr>14.jpg</wbr><wbr>
此時,斷點停留在 alert(a) 那一行,其實這一行是故意添加的錯誤代碼,只是爲了產生一個斷點。因此,可以像下圖那樣,跳過此行代碼的執行,直接轉到給 person 對象賦值那一行。
</wbr><wbr>15.jpg</wbr><wbr>
之後,我們可以像下圖那樣,對 person 對象和 years 數組添加監視,以便觀察它們的存儲結構。
</wbr><wbr>16.jpg</wbr><wbr>
</wbr><wbr>17.jpg</wbr><wbr>
現在,我們可以“逐語句”的單步執行了,這樣被監視變量的每一次細微變化,都可以被監視得一清二楚。
</wbr><wbr>18.jpg</wbr><wbr>
</wbr><wbr>19.jpg</wbr><wbr>
</wbr><wbr>20.jpg</wbr><wbr>
“工欲善其事,必先利其器”,“君子性非異也,善假於物也”,說得都是這個道理。好了,希望那些在 IE 下開發 JavaScript 的程序員,不會再抱怨沒有好的調試工具了,因爲利器就在你手中。b.gif
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章