本文へ移動
vast-cowのブログ
前のページへ戻る

Chrome DevToolsで覚えておきたい実践テクニック集

この記事を編集

Chrome DevTools には、知っているとデバッグ効率がかなり上がる便利な機能があります。

実務で使いやすいものを挙げると、次あたりです。

inspect()

指定した要素を DevTools 上で直接確認できます。

DOM 要素を渡すと、Elements パネルでその要素が選択された状態になります。

inspect(document.querySelector('.button'))
inspect($0)

JavaScript で見つけた要素を、そのまま Elements で確認したいときに便利です。


$0 / $1 / $2

Elements で選択した要素を Console から参照できます。

$0
$0.textContent
$0.getBoundingClientRect()

Elements と Console を行き来しながら調査するときに便利です。


$() / $$()

DevTools Console 専用の簡易セレクタです。

$('.button')
$$('a')

ちょっとDOMを確認したいときに、毎回 document.querySelector() と書かずに済みます。


monitorEvents()

指定した要素で発生するイベントを Console に表示できます。

monitorEvents($0, 'click')
monitorEvents($0, ['click', 'input', 'change'])

イベント監視を解除するときは、

unmonitorEvents($0)

を使います。

「この操作で何のイベントが発生している?」を調べたいときに便利です。


getEventListeners()

対象要素に登録されているイベントリスナーを確認できます。

getEventListeners($0)

click や keydown など、どんなイベントが登録されているのかを調べるときに使えます。


copy()

値をクリップボードへコピーできます。

copy($0.outerHTML)
copy(JSON.stringify(data, null, 2))

DOM やAPIレスポンスなどを、そのままエディタやチャットに貼りたいときに便利です。


console.table()

配列やオブジェクトを表形式で表示できます。

console.table(users)

オブジェクトの配列を見るときは、普通の console.log() よりかなり確認しやすくなります。


console.trace()

現在の処理がどこから呼び出されたのか、スタックトレースを確認できます。

console.trace()

「この関数、どこから呼ばれている?」という調査に便利です。


DOM変更でブレーク

Elements で対象要素を右クリックし、

Break on

から次のような条件を指定できます。

「誰がこのDOMを書き換えた?」を追跡するときにかなり強力です。


Event Listener Breakpoints

Sources → Event Listener Breakpoints から設定できます。

click、input、keydown などのイベントが発生した瞬間に JavaScript の実行を停止できます。

イベントハンドラがどこに書かれているのか分からないときに便利です。


XHR / fetch Breakpoints

Sources → XHR/fetch Breakpoints から設定できます。

URL の一部を指定すると、その通信が発生した瞬間に JavaScript の実行を停止できます。

「このAPIを呼んでいるコードはどこ?」を探すときに便利です。


Network の Preserve log

Network パネルの Preserve log を有効にすると、ページ遷移やリロード後も通信履歴を残せます。

ログイン、OAuth、リダイレクトなど、ページ遷移をまたぐ問題の調査に便利です。


Network の Copy as fetch / Copy as cURL

Network パネルのリクエストを右クリックすると、

などが使えます。

ブラウザで発生したリクエストを、そのままコードやターミナルで再現したいときに便利です。


Request blocking

特定のJS、API、画像などを意図的にブロックできます。

例えば、

「このAPIが失敗したら画面はどうなるか」

「このJSが読み込めなかったらどうなるか」

といった異常系の確認に使えます。


Local Overrides

Network 上の JavaScript、CSS、HTML などをローカルで差し替え、リロード後も変更を保持できます。

本番環境のコードを直接変更することなく、

「ここを修正したらどうなる?」

という検証ができます。


Coverage

Command Menu を開いて、

Ctrl/Cmd + Shift + P

Show Coverage

を実行すると、読み込まれた CSS / JavaScript のうち、実際にどれだけ使用されているか確認できます。

未使用CSSや、巨大なJavaScriptバンドルを調査するときに便利です。


Performance monitor

Command Menu から

Show Performance monitor

を実行すると、

などをリアルタイムで確認できます。

「操作しているうちにDOMやメモリが増え続けていないか」といった調査にも使えます。


Rendering

Command Menu → Show Rendering から、レンダリング関連のデバッグ機能を利用できます。

例えば、

などがあります。

再描画が多い箇所やレイアウトシフト、描画パフォーマンスを調べるときに便利です。


まず覚えておきたい7つ

特に使用頻度が高いのは、この7つです。

inspect(el)
$0
$$()
monitorEvents()
getEventListeners()
copy()
console.table()

全部覚える必要はありません。

まずは $0、$$()、inspect() あたりから使い始めるだけでも、Chrome DevTools でのDOM調査はかなり楽になります。


この記事を編集
この記事を共有:

コメント


前の記事
tmuxの中からOSC 52で外側ターミナルのクリップボードへ文字列を送る
次の記事
Linux に uv をシステムワイドでインストールする