Chrome Dev Tools 是每一位前端工程師開發調試的必備利器,稱之爲FE的瑞士軍刀也絕不爲過。然而,往往當發現一些本身不知道的用法時,咱們常常會以爲,本身只是掌握了其強大功能的九牛一毛。爲了可以讓她發揮出最大功效,首先,咱們應當瞭解她更多的使用方法;而後,在開發中合適的場景下,刻意練習使用;最後,熟練掌握那些以前不瞭解的功能,併爲我所爲用,最大提高效率。javascript
本文翻譯自谷歌官方文檔,主要介紹了Elements, Console, Sources, Network四個Tab頁面下的功能。敬請期待
Chrome Dev Tools 性能篇
css
Cmd + Alt + c
inspect,點擊想觀察的節點inspect(DOM)
,DOM
爲想觀察的節點。F2
-> Edit as HTML. ctrl+enter
保存更改,Esc
退出更改,不保存.Enter
,而後Tab
選擇.Edit/Add Attribute
.Scroll into view
,滾動頁面使節點在視口中顯示.斷點調試html
break on
,能夠對該節點的子樹修改、屬性修改、節點移除三種事件添加斷點DOM Breakpoints
,管理DOM斷點.右鍵
-> Show Function Definition
useCapture
的值(bool).Styles,位於面板左側,主要是樣式相關內容前端
Styles
中的文件名->跳轉到Source->右鍵,Local Modifications.Inherited from <NODE>
,點擊<NODE>
能夠跳轉到該DOM節點。.cls
,能夠查看、增長、刪除class。+
按鈕,(選擇要向哪個樣式表)添加一個新的 CSS 規則。:hov
,或在元素上點擊右鍵,啓用/刪除僞類。color
,background-color
等快捷方式。color
聲明左側帶顏色的小正方形,打開color-picker
。Cmd + Alt + J
Shift + Enter
實現換行,而不會直接運行。clear()
/console.clear()
清空console.console.group("Group Name")
console.groupCollapsed("Group Name")//默認摺疊
console.groupEnd()複製代碼
console.time("name");
console.timeEnd("name");
// 向Timeline添加一個標記
console.timeStamp("Adding result");複製代碼
console.assert(a < 500, "a > 500!");複製代碼
// 追蹤堆棧
try {
// some code here
} cache(e) {
console.log(e.stack);
}
// 打印跟蹤調用棧
console.trace();
// 處理運行時異常
window.onerror = function(message, url, line){
console.log("window.onerror was invoked with message = " + message + ", url = " + url + ", line = " + line);
}複製代碼
%s %d %f %o(DOM節點) %O(js對象) %c 樣式
。不過有了ES6之後,推薦使用更加方便、靈活的模板字符串Profiles
面板中console.profile("label");
console.profileEnd();複製代碼
其餘特殊用法java
// DOM元素格式化爲JS對象
console.dir(document.body);
// 輸出object子級元素xml
console.dirxml(object);
// 將Object,Array輸出
console.table([{a:1, b:2, c:3}, {a:"foo", b:false, c:undefined}]);
console.table([[1,2,3], [2,3,4]]);
console.table(family, ["firstName", "lastName", "age"]);
// 記錄相同字符串傳入的次數(多用於統計函數調用次數)
console.count("Login called for user " + user);複製代碼
↑ / ↓切換查看錶達式 web
選擇元素chrome
$('code') // document.querySelector()
$$('figure') // document.querySelectorAll()
$x('html/body/p') // 返回與指定xpath匹配的數組元素
$0 - 4 // 返回最近訪問過的5個元素,$0爲最新的一個複製代碼
監聽事件, 查看時間監聽器(Elements
->Event Listener
中也能夠查看)數組
monitorEvents(document.body, "click"); // 監聽事件
unmonitorEvents(document.body); // 取消監聽
getEventListeners(document); // 返回在指定對象上註冊的事件偵聽器複製代碼
複製:將指定對象的字符串表示形式複製到剪貼板.cookie
copy(object);
copy($0);複製代碼
調試函數前端工程師
debug(fn); // 調用fn時開始調試
undebug(fn); // 中止調試
monitor(function); // console中將輸出函數調用,以及傳入的參數 unmonitor(function); // 中止監控複製代碼
Elements
中打開指定元素/對象/函數.inspect(DOM);
inspect(object/function);複製代碼
keys(object);
values(object);複製代碼
Event
斷點:Source標籤
->右側Event Listener Breakpoints
->Mouse
->click
DOM
斷點.Elements 面板中,對DOM節點右鍵,Break On...XHR
斷點Pause on exceptions
// 當DOM元素知足某個條件進行斷點,同時查看這個元素
elem.hasAttribute('class') && inspect(elem);複製代碼
continue to here
Watch
->+
,添加但願檢測的表達式,好比,a,typeof aScope
窗格,在腳本暫停時,會顯示當前變量Deactivate breakpoints
,啓動/忽略所有斷點Call Stack
調用堆棧
Call Stack
中右鍵,Restart Frame
Async
,提升完整的異步函數調用堆棧的可視性Blackbox Script
Call Stack
中,右鍵->Blackbox Script
Settings
->Blockboxing
->add pattern
,下拉菜單中,Blackbox
黑箱,Disabled
阻止執行Cmd + s
,繼續運行代碼Threads
,切換線程Source Map
, Settings
中開啓Snippets
編寫代碼,運行結果輸出到console
DOMContentLoaded
事件,紅線標誌load
事件。Http1.0/1.1
下,chrome
最多支持對同一個domain
6個TCP
請求Capture Screenshots
,再次刷新頁面時,能夠在時間軸上方看到對應屏幕狀態。disable cache
,throttle
,Offline
,hide data urls
clear browser cache
header
:Use large request rows
,Show overview
copy response
->console中copy({})
->獲得格式化的JSONblock request
在drawer中,查看被block的requestXHR request
-> reply XHR
Summary
: request數量,大小,時間domain
,has-response-header
,is
(is:running),larger-than
,method
,mime-type
,mixed-content
,scheme
,set-cookie-domain
,set-cookie-name
,set-cookie-value
,status-code