谷歌瀏覽器開發調試工具中Sources面板 js調試等 完全介紹

這次分享的是Chrome開發工具中最有用的面板Sources。 Sources面板幾乎是我最常用到的Chrome功能面板,也是在我看來決解一般問題的主要功能面板。通常只要是開發遇到了js報錯或者其他代碼問題,在審視一遍自己的代碼而一無所獲之后,我首先就會打開Sources進行js斷點調試,而它也幾乎能解決我80%的代碼問題。Js斷點這個功能讓人興奮不已,在沒有js斷點功能,只能在IE(萬惡的IE)中靠alert彈出窗口調試js代碼的時代(特別alert一個object根本不會理你),那樣的開發環境對于前端程序員來說簡直是一場噩夢。本篇文章講會介紹Sources的具體用法,幫助各位在開發過程中夠愉快地調試js代碼,而不是因它而發瘋。首先打開F12開發工具切換到Sources面板中:

Sources功能面板是資源面板,他主要分為四個部分,四個部分并不是獨立的,他們互相關聯,互動共同實現一個重要的功能:監控js在執行期的活動。簡單來說就是斷點啦。

谷歌瀏覽器2015最新版下載:http://m.cr173.com/x/2349

首先我們來看區域1,它的功能有些類似于Resources面板,主要是顯示網頁加載的腳本文件:例如css, js等資源文件(它不包含cookie,img等靜態資源文件)。

區域1的導航條上有三個tab切換選項,他們都存有不同域名和環境下的js和css文件,我們首先來說明Sources(資源)選項的作用:

Sources: 包含該項目的靜態資源文件。雙擊選中文件,該文件內容會在區域2中顯示,如果你選中的是js文件,那么你可以在區域2種單擊行號進行斷點調試,只要js執行到了你所標記的這一行,它會停止向下執行并且等待你的命令:

從上圖可以看到js執行到斷點處時各個區域的變化,首先是區域3中的Breakpoints記錄信息會變高亮,然后是區域4中Scope?選項中列出了斷點處私有和公有的變量信息,這樣,我可以很直觀地知道,此時此刻js的執行狀態。同樣的,你可以把鼠標放到區域2種的某個變量上,瀏覽器會彈出一個小框框,框框里面則是你懸浮其上的變量所有信息:

?  然后,你可以按F10跟著js執行的路徑一步一步地走下去,如果你遇到了一個函數包含著另外一個函數,那么你可以按F11進入到個函數中去觀察它的代碼執行活動。你也可以通過點擊區域1底部的各個圖標對js代碼進行跟蹤。不過我建議你使用快捷鍵,故名思義,因為它比較快捷方便。不過怎么用完全按照個人習慣來吧。下圖是各個按鈕的作用功能。

在上圖藍色圓圈中數字,它們分別代表:

1、停止斷點調試

2、不跳入函數中去,繼續執行下一行代碼(F10)

3、跳入函數中去(F11)

4、從執行的函數中跳出

5、禁用所有的斷點,不做任何調試

6、程序運行時遇到異常時是否中斷的開關

接下來在區域4種切換到Watch Expressions 選項,它的作用是為目前斷點添加表達式,使得每次斷點往下走一步都會執行你寫下的js代碼。需要注意的是這個功能必須謹慎使用,因為這可能會導致你寫下的監控代碼段會不斷地被執行。

為了避免你的調試代碼重復執行,我們可以在調試時直接在console控制臺上一次性地輸出當前斷點處的信息(推薦這樣做)。為了驗證我們在console面板中擁有的是當前斷點環境,我門可以對比斷點執行前后的this值變化。

如果你覺得在斷點的時候為了看一個變量必須借用console面板輸出的方式來查看會比較麻煩,那么你可以更新最新版的Chrome,它已經為我們解決了這個煩惱。為了方便開發者調試,在這一點上谷歌已經做到了極致,就在前幾天更新過Chrome以后,鹵煮意外地發現了斷點時監控環境變量的另外一種方式,這種方式極為清晰,在斷點調試的時候,區域2中會自動顯示每個變量的值,每次代碼往下走的時候這個值都回時時更新。這讓開發者對當前環境變量幾乎可以說是一目了然。(此功能有一個小缺陷,那就是無法查看數組或者對象的具體索引和值,不過我相信google會改進它的。)

當你的項目已經線上,出現了一個bug,你修復了之后無法看到它真正在線上的效果,那么你可以在打開線上的項目,直接在瀏覽器中修改代碼然后看到效果。這樣的效果往往是最直接的,這種方法也能幫你省去頻繁驗證發布的麻煩,畢竟身為前端碼農的你也一定會聽到過后臺(通常情況下是后臺發布)大哥的抱怨:“XXX,測試通過了沒,不要出現了哈,發布一次很麻煩的!”。而在Chrome里面,只需要在區域2種直接修改,你就可以驗證你的代碼在線上是否可行。鹵煮在此處只是指出該功能的用法之一。其他的就憑諸位的聰明才智去想了。

即使在斷點時,你也可以編輯代碼,按ctrl+S保存之后,你會看到區域2的背景由白色變為淺色,而斷點會重新開始執行。

回到區域1,Content script 選項開里面包含著一些第三方插件或者瀏覽器自身的js代碼,經常它是被忽略的,實際上它的作用很少。我們可以更多關注一下Snippets選項。還記得基礎篇里面介紹的style嗎?在里面我們可以編輯界面的css代碼并且即時看到它們的映射效果,同樣地,在Sinppets中,我們也 可以編輯(重寫)js代碼片段。這些片段實際上就相當于你的js文件一樣,不同的是本地的js文件在編輯器里面編輯的,而此處,你是在瀏覽器中編寫的。這些代碼片段在瀏覽器刷新的時候既不會消失,也不會執行,除非是你手動執行它。它可以存在你的本地瀏覽器中,即使關閉瀏覽器,再次打開時它依然還在那里。它的主要作用可以使得我們編寫一些項目的測試代碼時提供便捷,你知道,如果你在編輯器上編寫這些代碼,在發布時你必須為它們添加注釋符號或者手動刪除它們,而在瀏覽器上編寫就不需要這樣繁瑣了。

在Snippets選項的空白處右鍵后選擇彈出的new選項,建立一個你自己的新的文件,然后在區域2種編輯它。

Snippets?的非常功能強大,它的許多隱藏功能還有待發掘。目前鹵煮使用它是在記住調試片段、單元測試、少量的功能代碼編寫功能上。

最后我們看看js中時間豐富的監控功能,同上篇文章介紹的一樣,Sources面板和Elements面板一樣有監控事件的功能,而且Sources中功能更加豐富,也更加強大。它的這部分功能集中在區域3中。我以下圖為例,觀察其作用。

從上到下,紫色圈內的數字的意義:

1、斷點處的債堆棧,就是從該函數起,逐級追尋調用到他的函數名。例如:

function a () { ? b(); } function b() { ? c(); ? } function c() { ?//在該處斷點,查看call stack ? } a->b->c. call stack 從上到下的順序就是 c b a

2、在區域2中你的斷點調試信息。當某個斷點在執行的時候對應的信息會高亮,雙擊該處信息可以在區域2中快速定位。

3、添加的Dom監控信息。

4、擊+ 并輸入 URL 包含的字符串即可監聽該 URL 的 Ajax 請求,輸入內容就相當于 URL 的過濾器。如果什么都不填,那么就監聽所有 XHR 請求。一旦 XHR 調用觸發時就會在 request.send() 的地方中斷。

5、為網頁添加各種類型的斷點信息。如選中了Mouse中的某一項(click),當你在網頁上出發這個動作(單擊網頁任意地方),你瀏覽器就是立刻斷點監控該事件。

值得再次重復一遍,Sources是一般的功能開發中最常用到也是最有用的功能面板,它里面的許多功能對于我們開發前端工程來說是非常有幫助的。在web2.0時代的今天,我不推薦依然在自己的代碼里面寫調試信息的行為,因為這會然你的開發變得繁瑣。Chrome開發工具給我們提供的強大功能,我們應該好好利用之。這篇文章就到此結束,雖然有點繁瑣,但總算基本表述了鹵煮使用經驗和想法,希望對你有幫助。如果你覺得不錯,請推薦一下本文并繼續關注鹵煮在的博客。在下一篇中我將向大家介紹Chrome開發工具中的性能方面的調試。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/456165.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/456165.shtml
英文地址,請注明出處:http://en.pswp.cn/news/456165.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

java XML解析防止外部實體注入

/** * 增加防止部實體注入邏輯* <功能詳細描述>* param reader* throws SAXException* see [類、類#方法、類#成員]*/public static void setReaderFeature(SAXReader reader)throws SAXException{reader.setFeature("http://apache.org/xml/features/disallow-doct…

【Python】最新Python學習路線(完整詳細版,含整套教程)

python目前應用最廣的三個崗位&#xff1a;全棧開發、數據分析、運維開發&#xff0c;今天我們就以這三個重點的崗位來做一下自學Python的規劃&#xff0c;希望你在學之前就能有明確的學習方向。 最近開始整理python的資料&#xff0c;博主建立了一個qq群&#xff0c;希望給大家…

程序員,軟件測試知多少?

送給初級程序員的測試認知文作為開發同學&#xff0c;一些基本的測試崗位相關知識還是很有必要了解一下&#xff0c;免的某些同學在工作中和測試同學斗嘴、打架、群毆等以及被測試鄙視....。 我們常常聽說的一些測試專業術語&#xff0c;比如白盒、黑盒、單元測試&#xff0c;相…

ffmpeg最新源代碼(定期更新)

為了方便那些不能連接到ffmpeg的SVN倉庫更新源代碼的用戶&#xff0c;ffmpeg工程組特開辟一個專區&#xff0c;定期更新ffmpeg的源代碼&#xff0c;并將其快照上傳&#xff0c;有需要的朋友可以長期關注本帖。ffmpeg的編譯指令通常為&#xff1a;1、配置&#xff1a;configurat…

vue 入門環境搭建

公司項目要用vue.js來開發&#xff0c;要使用vue來開發前端框架&#xff0c;首先要有環境&#xff0c;所以給大家介紹一下如何搭建vue環境。其實很簡單&#xff1a; 1.首先下載安裝node.js。 去官網https://nodejs.org/zh-cn/下載安裝包。 2.安裝webpack 打開cmd命令界面&#…

【解決】Win10修改host沒有權限問題

Step1&#xff1a;右鍵文件選擇屬性&#xff0c;選擇安全&#xff0c;點擊編輯&#xff1a; Step2&#xff1a;在彈窗中點擊添加&#xff0c;在彈窗中點擊高級&#xff1a; Step3&#xff1a;在彈窗中點擊立即查找&#xff0c;選中當前用戶&#xff0c;點擊確定&#xff1a; …

[已授權] 互聯網定位技術小談

? 誠邀阿里云先知社區邀請&#xff0c;不勝感激&#xff01;今日小編在此為大家介紹一下互聯網中所應用的定位技術。互聯網的發展日新月異&#xff0c;技術迭代很快&#xff0c;各行各業的智慧在互聯網這片藍天下碰撞結晶&#xff0c;造福大眾。今天要講述的集中定位方式&…

H.264解碼器ffmpeg完整優化代碼(包括PC和Windows Mobile版本)

這里把前段時間對ffmpeg0.48進行簡化和修改&#xff0c;包括修正內存泄漏&#xff0c;修改一些語句使Max Speed能夠打開這些。其實代碼還是比較亂的&#xff0c;也有很大的繼續優化空間。這個工作花費了我一些休息時間&#xff0c;不過&#xff0c;我確實學習到了很多。這個代碼…

1.4.在TypeScript中使用JQuery

我們可以通過類型定義文件(*.d.ts)實現在TS中使用JQ 1.4.1.方式1 通過GitHub項目&#xff0c;手動下載&#xff0c;不過推薦使用第二種方式 項目地址&#xff1a; https://github.com/DefinitelyTyped/DefinitelyTyped 1.4.2.通過typings的方式 項目地址&#xff1a;https://gi…

Python的DataFrame切片大全(包含多重索引)

碼字不易&#xff0c;喜歡請點贊&#xff01;&#xff01;&#xff01; 摘要 這篇主要講解如何對pandas的DataFrame進行切片&#xff0c;包括取某行、某列、某幾行、某幾列、以及多重索引的取數方法。 ? 選取行名、列名、值 ? 以標簽&#xff08;行、列的名字&#xff09;…

sql server 保留小數,向上保留指定位數的小數,僅記錄,勿看。

比如 4.05 要取成 4.1 &#xff0c; 4.16 取成 4.2 &#xff0c;4.5 取成 4.5 &#xff0c;意思就是小數部分第二位不管是多少都丟掉然后加0.1&#xff0c;但是如果是 4.5 這樣完整的就不需要處理。 可以像下面這么寫。 select ceiling(4.56*10)/10轉載于:https://www.cnblogs.…

HelloCsdn

博客聲明我的第一個文章我的第一個文章 從現在開始,我要再這里記錄我的學習心得和體會,讓我們相互學習,一起努力,共同進步.

H264學習指南

因為最近手頭的活基本搞完了&#xff0c;人也閑了下來&#xff0c;這么熱的天氣&#xff0c;突然想寫這么一篇文章。不過首先聲明的是我對H264并不是太熟悉。但多多少少也學習了這么久了&#xff0c;寫點心得出來對自己是個交待&#xff0c;同時也希望給新手們一點幫助&#xf…

什么是數據分析的關鍵指標?

什么是核心關鍵指標呢&#xff1f; 這是一個好問題&#xff0c;不過沒有標準的答案。企業性質不同&#xff0c;所處行業、發展階段不同&#xff0c;關注點當然不同。不過大體可以這樣來劃分。 1、發展階段不同&#xff0c;需求不同 對于一個想要做數據化管理的企業來說&#xf…

01Pandas_數據結構

Pandas數據結構 做python數據分析&#xff0c;數據挖掘&#xff0c;機器學習的童鞋應該都離不開pandas。在做數據的預處理的時候pandas尤為給力。 本文主要介紹pandas中的兩種數據結構&#xff1a;series,dataframe。 import pandas as pd 1.Series 首先來介紹series數據結…

加密函數

MD5&#xff1a;密碼為web頁面做準備&#xff0c;建議使用MD5 PASSWORD() :修改當前用戶或其他用戶密碼 mysql> SELECT MD5(admin); #對admin進行MD5的加密&#xff08;32位&#xff09;----------------------------------| MD5(admin) |--------------------------------…

如何使用notepad運行python程序

關于使用notepad運行python程序 首先要確保python解釋器已經安裝成功,查看方法,windows可以在命令提示符中查看,通過按下winR鍵,調出運行窗口,在輸入框中輸入cmd回車,然后在命令行中輸入python,若出現版本信息,例如Python 3.6.1 (v3.6.1:69c0db5, Mar 21 2017, 18:41:36) [MSC…

H.264學習歷程(天之驕子)

半年前&#xff0c;我知道了H.264這個名詞。那個時候決定學習H.264&#xff0c;可是我連資料都不知道如何收集。而且整個學校就只有我一個人在學習H.264&#xff0c;找不到人交流&#xff0c;所以那個時候學得真的是舉步維艱&#xff0c;很痛苦&#xff0c;而能在網上認識一個學…

插入排序:表折半插入

在前一篇插入排序&#xff1a;表插入中。我們用靜態鏈表的存儲方式。直接插入的策略&#xff0c;構建了一種新的插入排序算法&#xff1a;表插入。有人可能會想到&#xff1a;相同是靜態鏈表的形式&#xff0c;為什么不使用更高效的折半插入策略呢&#xff1f;這樣的想法真的非…

C++編譯報錯:重復定義

http://note.youdao.com/noteshare?idcb2bed862a2daae89775603168f297af轉載于:https://www.cnblogs.com/taiyang-li/p/6637093.html