本文暫未涉及Performance
面板的內容。 後續會單獨出一篇,如下是目錄:css
Blackbox Script
WebView
bug
跟蹤、斷點調試等API
數據是否正確、審查頁面元素樣式及佈局、頁面加載性能分析、自動化測試AdBlock、Gliffy、Axure
等Elements
- 頁面dom元素Console
- 控制檯Sources
- 頁面靜態資源Network
- 網絡Performance
- 設備加載性能分析Application
- 應用信息,PWA/Storage/Cache/Frames
Security
- 安全分析Audits
- 審計,自動化測試工具cmd + shift + p
在Devtools
打開的狀況下,鍵入cmd + shift + p
將其激活,而後開始在欄中鍵入要查找的命令或輸入"?"
號以查看全部可用命令。前端
...
: 打開文件:
: 前往文件@
:前往標識符(函數,類名等)!
: 運行腳本文件>
: 打開某菜單功能> performance monitor
> FPS
選擇第一項> screen
選擇Capture node screenhot
DOM
斷點調試當你要調試特定元素的DOM中的更改時,可使用此選項。這些是DOM更改斷點的類型: vue
Subtree modifications
: 子節點刪除或添加時Attributes modifications
: 屬性修改時Node Removal
: 節點刪除時如上圖:監聽form
標籤,在input
框得到焦點時,觸發斷點調試node
Blackbox Script
剔除多餘腳本斷點。jquery
例如第三方(Javascript
框架和庫,廣告等的堆棧跟蹤)。git
爲避免這種狀況並集中精力處理核心代碼,在Sources
或網絡選項卡中打開文件,右鍵單擊並選擇Blackbox Script
github
Event Listener Breakpoints
Sources
面板Event Listener Breakpoints
local overrides
使用咱們本身的本地資源覆蓋網頁所使用的資源。web
相似的,使用DevTools
的工做區設置持久化,將本地的文件夾映射到網絡,在chrome
開發者功能裏面對css 樣式的修改,都會直接改動本地文件,頁面從新加載,使用的資源也是本地資源,達到持久化的效果。面試
Sources > Overrides > Enable local Overrides
,選擇本地文件夾
Elements
,編輯樣式,自動生成本地文件。Sources
,檢查文件,編輯更改。
該項能夠自動修改除XHR異步請求的資源,下載的文件若未格式化,能夠點左下角。chrome
local overrides
模擬Mock
數據對於返回json 數據的接口,能夠利用該功能,簡單模擬返回數據。
好比:
api
爲: http://www.xxx.com/api/v1/list
在根目錄下,新建文件www.xxx.com/api/v1/list
,list
文件中的內容,與正常接口返回格式相同。
對象或者數組類型,從而覆蓋掉原接口請求。
能夠執行常見任務的功能,例如選擇DOM
元素,觸發事件,監視事件,在DOM
中添加和刪除元素等。
這像是Chrome
自身實現的jquery
增強版。
$(selector, [startNode])
:單選擇器document.querySelector
的簡寫 語法:
$('a').href;
$('[test-id="logo-img"]').src;
$('#movie_player').click();
複製代碼
此函數還支持第二個參數startNode,該參數指定從中搜索元素的「元素」或Node。此參數的默認值爲document
$$(選擇器,[startNode])
:全選擇器document.querySelectorAll
的簡寫,返回一個數組標籤元素 語法:
$$('.button')
複製代碼
var images = $$('img', document.querySelector('.devsite-header-background'));
for (each in images) {
console.log(images[each].src);
}
複製代碼
$x(path, [startNode])
:xpath
選擇器$x(path)
返回與給定xpath
表達式匹配的DOM元素數組。
例如,如下代碼返回<p>
頁面上的全部元素:
$x("//p")
複製代碼
<p>
包含
<a>
元素的全部元素:
$x("//p[a]")
複製代碼
xpath
多用於爬蟲抓取,前端的同窗可能不熟悉。
getEventListeners(object)
:獲取指定對象的綁定事件getEventListeners(object)
返回在指定對象上註冊的事件偵聽器。返回值是一個對象,其中包含每一個已註冊事件類型(例如,click
或keydown
)的數組。每一個數組的成員是描述爲每種類型註冊的偵聽器的對象。 用法:
getEventListeners(document);
複製代碼
API
便捷多了。
console
warn
和
error
打印外
%s
、%o
、%d
、和%c
const text = "文本1"
console.log(`打印${text}`)
複製代碼
除了標準的ES6
語法,實際上還支持四種字符串輸出。 分別是:
console.log("打印 %s", text)
複製代碼
%s
:字符串%o
:對象%d
:數字或小數還有比較特殊的%c
,可用於改寫輸出樣式。
console.log('%c 文本1', 'font-size:50px; background: ; text-shadow: 10px 10px 10px blue')
複製代碼
const text = "文本1"
console.log('%c %s', 'font-size:50px; background: ; text-shadow: 10px 10px 10px blue', text)
複製代碼
你還能夠這麼玩:
console.log('%c Auth ',
'color: white; background-color: #2274A5',
'Login page rendered');
console.log('%c GraphQL ',
'color: white; background-color: #95B46A',
'Get user details');
console.log('%c Error ',
'color: white; background-color: #D33F49',
'Error getting user details');
複製代碼
當咱們須要打印多個對象時,常常一個個輸出。且看不到對象名稱,不利於閱讀:
之前個人作法是這麼打印:
console.log('hello', hello);
console.log('world', world);
複製代碼
這顯然有點笨拙繁瑣。其實,輸出也支持對象解構:
console.log({hello, world});
複製代碼
console.assert()
當你須要在特定條件判斷時打印日誌,這將很是有用。
語法
console.assert(assertion,obj)
複製代碼
用法
const value = 1001
console.assert(value===1000,"value is not 1000")
複製代碼
console
編組:console.group()
當你須要將詳細信息分組或嵌套在一塊兒以便可以輕鬆閱讀日誌時,可使用此功能。
console.group('用戶列表');
console.log('name: 張三');
console.log('job: 🐶前端');
// 內層
console.group('地址');
console.log('Street: 123 街');
console.log('City: 北京');
console.log('State: 在職');
console.groupEnd(); // 結束內層
console.groupEnd(); // 結束外層
複製代碼
console.time()
沒有Performance API
精準,但勝在使用簡便。
let i = 0;
console.time("While loop");
while (i < 1000000) {
i++;
}
console.timeEnd("While loop");
console.time("For loop");
for (i = 0; i < 1000000; i++) {
// For Loop
}
console.timeEnd("For loop");
複製代碼
console.table()
這個適用於打印數組對象。。。
let languages = [
{ name: "JavaScript", fileExtension: ".js" },
{ name: "TypeScript", fileExtension: ".ts" },
{ name: "CoffeeScript", fileExtension: ".coffee" }
];
console.table(languages);
複製代碼
DOM
對象節點:console.dir()
打印出該對象的全部屬性和屬性值. console.dir()
和console.log()
的做用區別並不明顯。若用於打印字符串,則輸出一摸同樣。
console.log("Why,hello!");
console.dir("Why,hello!");
複製代碼
log
識別爲字符串輸出,
dir
直接打印對象。)。
惟一顯著區別在於打印dom
對象上:
console.log(document)
console.dir(document)
複製代碼
DOM
樹對象。
WebView
使用Chrome
開發者工具在原生Android
應用中調試WebView
。
配置WebViews
進行調試。
在 WebView
類上調用靜態方法setWebContentsDebuggingEnabled
。
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
WebView.setWebContentsDebuggingEnabled(true);
}
複製代碼
手機打開usb
調試,插上電腦。
在Chrome
地址欄輸入:Chrome://inspect
App
中打開
WebView
時,
chrome
中會監聽到並顯示你的頁面。 4. 點擊頁面下的
inspect
,就能夠實時看到手機上
WebView
頁面的顯示狀態了。(第一次使用可能會白屏,這是由於須要去
https://chrome-devtools-frontend.appspot.com
那邊下載文件)
除了inspect
標籤,還有 Focus tab
:
Android
設備上的相同操做其餘應用裏的WebView
也能夠,例如這是某個應用裏的遊戲,用的也是網頁:
Node.js
具體能夠查看阿里雲社區的這篇:
若是你以爲這篇內容對你挺有啓發,我想邀請你幫我三個小忙:
也能夠來個人GitHub
博客裏拿全部文章的源文件:
前端勸退指南:github.com/roger-hiro/…