![](https://habrastorage.org/webt/3s/7x/sc/3s7xsccga4ykyg9-b317tp9i5sw.png)
Доброго времени суток, друзья!
Chrome Developer Tools — очень мощный набор инструментов для разработки веб приложений. С помощью этих инструментов мы можем перемещаться по DOM, осуществлять проверку запросов на сервер, настраивать производительность приложений и др.
Среди множества доступных возможностей, существует несколько по-настоящему интересных. Эти «фичи» помогают делать на один-два клика меньше — разве не для этого мы здесь собрались?
Стиль jQuery для обращения к DOM
jQuery — потрясающая библиотека. Она управляет вебом на протяжении целой эпохи. По некоторым сведениям более 70% самых популярных веб сайтов в мире используют ту или иную версию jQuery. Это удивительное достижение для библиотеки, написанной в далеком 2006 году.
Самым популярным API, предоставляемым jQuery, является $, используемый для выбора элементов DOM. В консоли инструментов разработчика Chrome (далее — консоль) существует возможность использования селектора $, который является псевдонимом document.querySelector().
Например, чтобы кликнуть по кнопке нужно сделать следующее:
![](https://habrastorage.org/webt/ly/c_/og/lyc_og0jgwflzxku0idkin-20gi.png)
$$ является синонимом document.querySelectorAll():
![](https://habrastorage.org/webt/af/zp/aj/afzpajxnqczyefwgcxkeqpnhy54.png)
Есть еще парочка приемов работы с $. Порой селектор является слишком сложным, чтобы набирать его вручную, или мы просто не можем определить достаточную специфичность селектора. Если мы выбираем элемент во вкладке «Элементы», то можем получить его в консоли с помощью переменной $0:
![](https://habrastorage.org/webt/cg/b-/ru/cgb-ru0hi1d8xtpqzc82l893tkg.gif)
На самом деле консоль позволяет получить доступ к последним 5 выбранным элементам. Эти элементы доступны через переменные $0-$4, соответственно:
![](https://habrastorage.org/webt/xi/ta/l5/xital5atyxb81m51eqszpfcvlvk.gif)
Копирование свойств элемента
Вкладка «Элементы» является очень полезной. Она хранит DOM дерево нашего сайта, позволяет просматривать стили элементов и вносить изменения в них на лету.
Действительно прикольная штука, которую я обнаружил, состоит в возможности копировать свойства элемента (и не только) с помощью контекстного меню.
Например, можно копировать селектор элемента:
![](https://habrastorage.org/webt/yh/ax/w7/yhaxw7j1vfkxdcbfkjimzwl-t-4.gif)
Этот селектор может быть недостаточно специфичным или слишком специфичным, но в любом случае это помогает при отладке кода.
Как видите, мы также можем копировать стили элемента, «путь» JS (document.querySelector(SELECTOR)) или XPath.
Фильтрация сетевых запросов
Иногда нам приходится работать со страницей, посылающей много запросов на сервер. Я имею ввиду, очень много запросов.
![](https://habrastorage.org/webt/io/zu/1z/iozu1zciqhs7u5xooozoj24ivpi.gif)
Пробираться сквозь эти дебри в поисках конкретного запроса занятие не из приятных. К счастью, вы можете отфильтровать запросы.
Набор фильтров позволяет отображать запросы по типам, например, XHR/Fetch, таблицы стилей, JS скрипты, изображения и т.д.:
![](https://habrastorage.org/webt/ai/yn/cb/aiyncbhivovthbylaezmksrs8bo.gif)
Вы также можете указать собственный критерий в поле для ввода, находящемся над фильтрами:
![](https://habrastorage.org/webt/tm/hh/3w/tmhh3wiuptvloxsub5mhdcvijbi.gif)
Эмулирование различной скорости подключения к сети
Используя вкладку «Сеть» мы можем протестировать наш сайт в условиях разной скорости подключения. По умолчанию установлено online, при котором вы в полной мере наслаждаетесь пропускной способностью вашего подключения.
![](https://habrastorage.org/webt/ss/48/xj/ss48xjhriy-9ogiwxaff9uvihqs.png)
Кроме online, доступны такие «пресеты», как Fast 3G, Slow 3G и offline, которые различаются по скорости загрузки страницы, скорости скачивания файлов и задержке во времени. Если вам необходимо эмулировать что-то еще, вы можете воспользоваться кнопкой Add… для добавления собственного профиля:
![](https://habrastorage.org/webt/ww/te/d3/wwted32ezuvkhkqsp1epe9srv4g.png)
Использование Live Expressions в консоли
Что такое Live Expressions?
Live Expressions — это выражения, которые постоянно «оцениваются» в консоли. Предположим, вы хотите отслеживать значение переменной. Вы можете вводить ее снова и снова:
![](https://habrastorage.org/webt/yv/fb/cw/yvfbcw3x1fjccj1_dezrr_syfa4.png)
Благодаря Live Expressions вы можете сосредоточиться на коде и позволить Chrome самостоятельно осуществлять мониторинг изменений:
![](https://habrastorage.org/webt/wn/zg/yd/wnzgydrmhcaqmvkwekkxtbphups.gif)
Эта возможность доступна как для переменных, объявленных в консоли, так и для переменных, объявленных в скрипте.
Эмулирование различных устройств
Тем, кто работал с адаптивными приложениями, знакомо чувство, которое испытываешь, когда долго и упорно работаешь над красотой макета страницы только для того, чтобы увидеть как все разваливается на устройстве с другим разрешением.
Я здесь не для того, чтобы рассказывать о медиа запросах, но для того, чтобы показать способ проверки их работы.
![](https://habrastorage.org/webt/st/jg/3n/stjg3nn75lcrxx_wkad4hjfsad8.png)
Если вы кликнете по кнопке, которая выглядит как планшет и телефон, то увидите, как область просмотра браузера меняется в соответствии с размерами различных устройств.
Вы можете выбрать устройство из списка преднастроек, содержащего популярные устройства, такие как iPhone X, iPad Pro, Pixel 2, Pixel 2 XL и др. Этот список далеко не полный (не очень актуальный), но его вполне достаточно для решения большинства задач.
Если нужного вам устройства нет в списке, можно установить разрешение вручную. Как видите, я установил собственное разрешение, чтобы эмулировать OnePlus 6 (мой повседневный гаджет):
![](https://habrastorage.org/webt/es/nm/a8/esnma8yxc1fjrsmsb_x88_6ihim.png)
Изменение состояния элемента
Приходилось ли вам сталкиваться с ситуацией, когда вы хотите поиграть со стилями, применяемыми к элементу при наведении на него курсора мыши (:hover), но каждый раз, когда вы перемещаете курсор на вкладку со стилями, элемент теряет hover?
Инструменты разработчика позволяют зафиксировать состояние элемента. Мы легко можем включать/отключать такие состояния как :active, :hover, :focus, :focus-within и :visited:
![](https://habrastorage.org/webt/ar/7l/dh/ar7ldhfjr63ydbxditzckr-e4hg.png)
Вот мои любимые инструменты разработчика Chrome. Благодарю за внимание.
Счастливого кодинга!