以前寫過前端答疑-chrome開發者工具正確食用-看網頁源碼,其中涉及到了 Sources
和 Network
兩個標籤。css
未曾想如今的世界愈來愈看不懂了
昨天吧,一個朋友忽然聯繫我了(應該是校友吧,不過我沒見過本人,大我十屆?我也是奔三的人了,忽然好難過)。
問我360 瀏覽器如何調試 js。這個時候應該配圖了[黑人問號臉]。調試應該是每一個開發必會的技能吧,即便不會,難道沒有網絡嗎?網上連教程都沒有嗎?html
那麼好了,基於上面的吐槽,咱們開始今天內容。前端
log 是一個開發利器。 hello world 大概就是咱們的每一個人的第一條 log。vue
java system.out.println('hello world')
python print('hello world')
js console.log('hello world')
固然,有的時候咱們會使用 alert 來打。這裏推薦一下 fundebug,一行代碼搞定BUG監控,也能夠打log,有一部分的免費額度。java
F12 或者 Control+Shift+i(PC平臺)/ Alt+Command+i(Mac平臺)打開咱們的控制檯python
JavaScript 原生中默認是沒有 Console 對象。是宿主對象提供的,也就是說console 是瀏覽器提供的內置對象。
用於訪問調試控制檯, 在不一樣的瀏覽器裏效果可能不一樣。
IE低版本沒有(固然你裝了高版本,而後打開控制檯他又能用console了)。ajax
提供了日誌級別api。能夠方便咱們根據類型,更快的定位須要關注的問題。算法
console.log('普通-文本')
與console.dir('普通-對象')
console.info('信息')
console.log 的別名,輸出信息,部分瀏覽器會增長一個藍色標誌。console.warn('警告')
黃色警告標識,也有堆棧信息。console.error('錯誤')
輸出信息時,在最前面加一個紅色的叉,表示出錯,同時會顯示錯誤發生的堆棧。console.debug('調試')
從 Chromium 58 開始,Chromium 瀏覽器只有勾選了控制檯中的 「Verbose」 日誌級別纔可見。支持多種寫法chrome
console.log('auther:', 'lilnong.top')
console.log('auther:%s', 'lilnong.top')
console.log('%cauther:%s', "color: red; font-size: 20px",'lilnong.top');
更適合封裝起來使用。console.assert(location.protocol=='https:', "https防止劫持哦~")
接受兩個參數,第一個參數是表達式,第二個參數是字符串。只有當第一個參數爲false,纔會輸出第二個參數,不然不會有任何結果。console.clear()
清除當前控制檯的全部輸出。console.count('count')
提供計數功能。好比說有個排序算法,咱們想統計時間複雜度。Console.countReset()
咱們也能夠重置指定標籤的計數器值。console.group('第一層');console.groupEnd();
提供將顯示的信息分組功能,能夠把信息進行摺疊和展開。console.groupCollapsed('第一層');console.groupEnd();
同上,不一樣點是默認是摺疊狀態console.table(arr);
提供將複合類型的數據轉爲表格顯示。還能夠進行排序等操做。console.time('task');console.timeEnd('task');
提供了統計代碼執行用時的功能。不許,波動會比較奇怪,多統計,而後求平均值吧console.trace();
追蹤函數的調用過程,也能夠理解爲把打印堆棧。上面介紹了API。接下來咱們介紹一下面板的使用。segmentfault
控制的是,級別篩選欄的隱藏與顯示。
user messages 是指全部用戶日誌,瀏覽器產生的不算。以下,產生的錯誤就不算
document.body.addEventListener('touchmove', (e)=>e.preventDefault()) // VM275:1 [Intervention] Unable to preventDefault inside passive event listener due to target being treated as passive. See https://www.chromestatus.com/features/5093566007214080
ctrl+l
對應的命令是 console.clear();
設置功能,裏面是一些控制開關。
相關的應該只有debugger
了吧。
當控制檯是打開狀態,走到debugger
會進入調試模式。反之沒打開控制檯,不會進入調試模式。
測試地址,爲何會有 ajax 的 debugger 測試呢?由於問個人那我的,說兼聽不到ajax的。
這裏介紹兩部分 代碼區和調試工具區
以下圖所示,能夠看到咱們當前程序的代碼。
在左邊行數顯示的位置咱們能夠直接打斷點,也能夠右鍵,執行更多斷點操做
debugger
也不會執行斷點。經常使用於一些開源類庫,打斷點不但願跳入到裏面。下面咱們介紹一下每一個按鈕的功能
工具欄介紹完了,咱們看一下其餘區域
subtree modified
、Node removed
、attribute modified
左邊部分是咱們的DOM樹,通常來講看看層級。具體找DOM的活,咱們都是在對應的元素上右鍵-檢查。
右邊部分是咱們當前DOM的css相關,通常來講能夠在這邊改改樣式,看看效果。支持鍵盤上下切換當前值。
還有一些便捷操做的控件
preserve log
該功能爲長日誌功能,正常來講看到的都是當前頁面的。
若是跳轉頁面或者說刷新以後就沒了。經過打開 preserve log
,咱們能夠長久的保留內容。
那它有什麼做用呢?
disable cache
前端緩存也是比較麻煩的一個事情。常常須要強刷,清緩存一頓的操做。
當咱們打開 disable cache
以後,咱們就不須要關了,每次都是無緩存的加載
offline
好比說在測試 PWA
。或者說弱網的狀況下的一種快速配置。
請求比較多的頁面,咱們有可能須要過濾。
工具欄提供了,路徑過濾(支持正則),類型過濾(All,XHR,js),
其實很簡單啊,找到頁面的請求,而後看 response
裏面不就是嗎?
這個其實也是昨天碰到的,有個朋友說他下載文件失敗。我打開看到他response
的header
的Content-Disposition
寫錯了。
能夠查看對應數據,更改對應數據,還能夠清空。