你能夠經過全局的方法 copy() 在 console 裏複製任何能拿到的資源,好比一些嵌套層級深的數據結構,使用copy能夠直接拿到html
假如你在 console 中打印了一堆數據 (例如你在 App 中計算出來的一個數組) ,而後想對數據作額外的操做,好比剛剛說的 copy (在不影響它原來值的狀況下) 。 那就能夠將它轉換成一個全局變量,只須要 右擊 它,並選擇 「 Store as global variable 」 (保存爲全局變量) 選項。jquery
Chrome 中有些快捷鍵對於咱們提高工做效率仍是有的:chrome
ctrl + L 清空控制檯
ctrl + shift + P 打開功能搜索
ctrl + [ 向左移動控制檯tab
ctrl + ] 向右移動控制檯tab
ctrl + 0~9 分別表明9個tab
複製代碼
當你只想對某一個 DOM 節點截圖時,大機率會用工具弄半天,但如今不須要了:直接選中那個節點,打開 Command 菜單而且使用 節點截圖 的就能夠了。你覺得這就是所有了嗎?你還能夠用這種方式 全屏截圖 - 經過 Capture full size screenshot 命令。請注意,這裏說的是全屏,並非嵌入頁面的一部分。api
ctrl + shift + P
Capture full size screenshot
複製代碼
若是我想看看,當前頁面內全部 p 標籤包含的文字總數,應該怎麼作呢?數組
$$('.content p')
.map(el => parseInt(el.innerText.length))
.reduce((sum, value) => sum + value)
複製代碼
這樣的腳本,並不須要花費我太多的精力來寫,但只是偶爾用用。因此我並不肯意每次都本身寫。緩存
那怎麼解決這個問題呢?bash
這就是 Snippets 的用武之地了:經過它能夠存放 JavaScript 代碼到 DevTools 中,方便下一次使用:服務器
1.進入到 Sources 面板
2.在導航欄裏選中 Snippets 這欄
3.點擊 New snippet(新建一個代碼塊)
4.輸入你的代碼以後保存
5.[ctrl] + [enter] 來運行你剛剛保存的腳本吧
複製代碼
在這個tab欄下查看當前頁面的DOM結構,具體信息網絡
'h'
來隱藏DOM元素某些的時候這頗有用:例如你想截圖,但你想去掉裏面的敏感信息數據結構
可使用鼠標拖動DOM元素,暫時放置到其餘地方,在於設計師扣細節時有用
一個一個點擊 ▶ 展開太慢?右鍵選擇 expand recursively
在這個tab欄下查看打印信息,也是調試使用最多的tab欄
$
在 Chrome 的 Elements 面板中, $0 是對咱們當前選中的 html 節點的引用。
理所固然, $1 是對上一次咱們選擇的節點的引用, $2 是對在那以前選擇的節點的引用,等等。一直到 $4
$
和 $$
$
是jquery中集合體,上面掛載了大量的方法、屬性;$$
是chrome中操做dom的利器,並且更加厲害了,不只僅是雙倍的快樂,還能節省更多的時間,由於它不只執行 document.QuerySelectorAll 而且它返回的是:一個節點的 數組 ,而不是一個 Node list 。
調試的過程當中,常常會打印一些變量的值,但若是你想看一下上次執行的結果呢?再輸一遍表達式嗎?
$_ 登場, $_ 是對上次執行的結果的 引用
複製代碼
await navigator.storage.estimate() Storage 系統的 佔用數 和 空閒數
await navigator.getBattery() 設備的 電池信息
await navigator.mediaCapabilities.decodingInfo({ type: 'file', audio: {contentType: 'audio/ogg'} }) 媒體能力
複製代碼
使用最多的調試方式,能打印信息
將打印信息展現成表格
要給應用中發生的事件, 加上一個確切的時間戳,須要開啓 timestamps 。你能夠在設置(在調試工具中的 ⋮ 下拉中找到它,或者按下 F1 )中來開啓。可是我建議你使用 Commands Menu
console.time() — 開啓一個計時器
console.timeEnd() — 結束計時而且將結果在 console 中打印出來
複製代碼
四、assert
當咱們傳入的第一個參數爲 假 時, console.assert 打印跟在這個參數後面的值。
假若有這麼一個函數,咱們會對服務器返回的數據進行加工,而且傳遞給回調函數:
function getName(callback) {
// 假設這個對象是從服務器請求回來的數據
const mySkey = {
name: 'mySkey',
}
// 咱們會使用一個回調來處理他的返回結果
callback(mySkey)
}
複製代碼
原本在回調中打印回調信息以下:
getName(v => console.log(v))
複製代碼
直接將console.log做爲回調
getName(console.log)
複製代碼
在這個tab欄下查看網絡信息,經常使用來調試接口信息
Preserve log (保留)日誌,在何時會用到呢?當須要記錄頁面刷新先後的 log 或者是頁面跳轉先後的 log 來進行對比調試的時候
Disable catch 不緩存
Online 能夠切換網速測試
Hide data Urls 隱藏數據Url
All 查看全部請求
xhr 查看xml的http的request
複製代碼
當你想測試頁面在某個接口失敗時的表現,就可使用 Network 面板中的禁止請求的方法。
在這個tab欄下查看當前網頁加載到的資源信息,常在緩存致使問題時查看目前加載文件的正確性
什麼是 Drawer ?
Chrome DevTools 有不少部分,被分爲9個 tab (俗稱選項卡) ( Elements , Console , Sources , Network , 等等...) 可是,那僅僅是它的一部分而已!有一組平行的選項卡,被隱藏在主窗口之下。這個組合被稱爲 Drawer
當你在 DevTools (任何選項卡)中時,按 [esc] 來顯示它,再次按 [esc] 隱藏它
當你看到一個很酷炫的動畫,但它是好幾個元素同時變化組成的,這種狀況很難經過檢索 element 的方式來弄懂它的原理是什麼,這時候就可使用 Drawer 慢速播放、重播或檢查動畫組的源代碼:
動畫組 : 動畫檢查器會根據開始時間(不包括延遲等等)檢測哪些動畫是相關的並將它們分到一組。換句話說,在同一腳本塊中觸發就被分爲同一組,但若是是異步的,它們將單獨分組。
複製代碼
能夠選擇播放速度的百分比[若是按下藍色的循環按鈕,動畫就會循環播放]:
coverage 能夠提供冗餘代碼的細節信息。使用 Drawer 菜單或者 Command 菜單來打開它
DevTools 的 coverage 工具能夠跟蹤當前加載的 JS 和 CSS 文件的 哪些行正在被執行 ,並顯示 未使用字節的百分比 , 綠色 的線條表示 已使用內容 , 紅 線表示 未使用的內容
在 Chrome 裏調 CSS 應該是我工做的平常了,但我老是想將 新寫的樣式 與 最初樣式 進行比較,看看到底有什麼不同,這時候就可使用 Drawer 的 Changes
咱們老是習慣於先在 IDE 或者文本編輯器中修改代碼,而後再進入 Chorme 中進行調試,那有沒有想過直接就在 Chrome 中來修改咱們的代碼呢?
代碼執行的位置也是最容易編輯代碼的位置。若是把項目的文件夾直接拖到 Source 面板, DevTools 會將修改同步到系統文件中。
Workspace 支持即時同步樣式,正如咱們剛纔所說,一旦設置好了 DevTools workspace ,就能夠在 Sources 面板中編輯 HTML 和 JavaScript (或者甚至是 TypeScript ,若是你有 sourcemaps )文件,按 ctrl + s 後它將被保存 在文件系統中。
在這個tab欄下能夠記錄和分析頁面在運行時的全部活動
在DevTools中,點擊 Performance 的 tab。 確保 Screenshots checkbox 被選中;點擊 Capture Settings(⚙️)按鈕,DevTools會展現不少設置,來模擬各類情況;對於模擬CPU,選擇4x slowdown,因而Devtools就開始模擬4倍低速CPU
通常錄製15s就ok了,信息捕獲也比較齊全了
點擊stop,中止後生成下面數據信息