Команда браузера Google Chrome проделывает огромную работу для того, чтобы разработчикам жилось лучше. Chrome DevTools — пример замечательного инструмента, сильно упрощающего отладку вашего веб-приложения. Но подчас не весь функционал этой системы виден с первого взгляда, поэтому Umar Hansa — программист из Лондона — описывает его на своем сайте, причем в весьма удобном формате: немного текста и короткий скринкаст. А мы, в свою очередь, решили сделать эти советы более доступными русскоязычной аудитории.
Содержание:
Продолжение: 17-32, 33-48.
Для отладки локального сайта на мобильном устройстве, откройте на нем страницу (удобнее будет воспользоваться расширением «Chrome to Phone»), далее включите удаленную отладку и перенаправьте на мобильное устройство локальный сайт через выделенный порт. После обновления страницы вы увидите, как все работает даже без использования командной строки!
Если вам нужно посмотреть, как конкретный DOM-элемент ведет себя в различных состояниях (
После изменения состояния узла, рядом с его открывающим тегом в DOM-дереве появится небольшой оранжевый индикатор-кружок. В каких-то случаях он появляется и у закрывающего тега (если он не слишком далеко ушел из поля зрения).
Прим. перев.: в последних версиях разработчики браузера немного изменили контекстное меню узла в панели «Elements». Теперь состояния элемента может быть выбрано из него напрямую без промежуточного «Force element state». А оранжевый индикатор сам по себе стал кликабельным и открывает то же самое меню.
Каждый ресурс, отображаемый в панели «Network», имеет свое собственное контекстное меню, содержащее пункт «Copy as cURL». При выборе этого пункта в буфер обмена попадет команда, полностью эмулирующая выбранный запрос через утилиту «cURL» (включая заголовки запроса). Вставьте ее в терминал, подредактируйте по необходимости и запускайте.
Прим. перев.: Чтобы повторить XHR-запрос без использования cURL, найдите его в панели «Network» и выберите пункт «Reply XHR» в его контекстном меню.
В DevTools есть функционал под названием «Сниппеты» (Snippets). При помощи него вы можете создавать или удалять код, который потом можно будет исполнить в контексте веб-страницы. Это гораздо удобней перепечатывания кода в панели «Console». Просто попробуйте:
Заметьте, что вам доступно полноценное многострочное редактирование и подтверждения случайного закрытия сниппета без сохранения.
Функция «Local modifications» позволяет вам отслеживать изменения файлов, которые были сделаны через DevTools. После изменения и сохранения файла через DevTools, выберите «Local modifications» в контекстном меню файла в левой колонке панели «Sources» и вы увидите список изменений, каждое из которых можно откатить.
Когда вам нужно записать действия страницы при помощи панели «Timeline», открепите окно DevTools от основного окна браузера и поместите его так, чтобы кнопка начала записи располагалась как можно ближе к анализируемому участку страницы. Как альтернатива используете горячие клавиши «Cmd+E», чтобы начать/остановить запись поведения.
Прим. перев.: такое расположение окна DevTools позволит избежать лишнего шума, возникающего пока вы ведете мышкой от кнопки записи до нужной части приложения.
Чтобы быстрее найти интересующий вас DOM-узел в панели «Elements», используйте поиск по CSS-селекторам. Поиск вызывается сочетанием клавиш «Cmd+F».
Чтобы скопировать ссылку на изображение в формате Data URI (закодированную в base64), найдите нужную картинку в панели «Resources» и из ее контекстного меню (в правой панели) выберите «Copy Image as Data URL».
Прим. перев.: это может быть полезно если вы, например, не хотите отправлять запрос за картинкой на сервер, а использовать ее base64-копию из CSS.
Переходите сразу к нужному месту в открываемом через команду «Cmd+O» в панели «Sources» файле, указывая желаемую позицию в формате
Панель «Sources» запоминает места всех изменения скриптов и позволяет вам циклически перемещаться между ними при помощи «Alt -» (назад) и «Alt +» (вперёд).
Кроме копирования заголовков запроса за сетевым ресурсом или заголовков ответа на него, вы можете скопировать весь ответ.
Вы можете использовать несколько курсоров одновременно для параллельного редактирования разных участков кода в панели «Sources». Для этого, зажав «Cmd», кликайте в те места, куда хотите поставить курсоры. Отменить выделение вы можете при помощи «Cmd+U».
Вы можете использовать выделение блоком в панели «Sources», удерживая «Alt» во время перемещения мыши.
Вы можете логировать все события объекта, используя метод
Чтобы использовать в консоли DevTools выбранный в панели «Element» DOM-узел, просто наберите
Прим. перев.: Панель «Sources» запоминает 5 последних выбранных элементов, доступ к которым осуществляется через
Поиск в панель «Network» позволяет фильтровать активные (до сих пор не получившие ответа) запросы, при помощи выражения
Прим. перев.: на сегодняшний день в Chrome Canary 48 поддерживаются следующие фильтры:
Ждите следующих частей!
Содержание:
- Перенаправление порта позволит вам открывать локальные ссылки на мобильном устройстве
- Активация псевдо-классов DOM-элемента
- Повтор сетевого запроса при помощи cURL
- Запуск сохранённых блоков кода (сниппетов) на любой веб-странице
- Отслеживание изменений файлов через DevTools
- Простая запись действий страницы
- Поиск элементов DOM-дерева при помощи CSS-селекторов
- Копирование изображения в формате Data URI
- Переход к нужной строке при открытии файла
- Упрощенная навигация между правками
- Копирование ответа на сетевой запрос
- Работа с несколькими курсорами при редактировании скриптов
- Блочное выделение
- Быстрый мониторинг событий в консоли
- Доступ к выбранному DOM-узлу в консоли
- Отслеживание незавершенных сетевых запросов при помощи фильтра is:running
Продолжение: 17-32, 33-48.
1. Перенаправление порта позволит вам открывать локальные ссылки на мобильном устройстве
Для отладки локального сайта на мобильном устройстве, откройте на нем страницу (удобнее будет воспользоваться расширением «Chrome to Phone»), далее включите удаленную отладку и перенаправьте на мобильное устройство локальный сайт через выделенный порт. После обновления страницы вы увидите, как все работает даже без использования командной строки!
Посмотреть скринкаст![](https://habrastorage.org/files/a12/a86/068/a12a86068f7943a2ae9c28e318901049.gif)
![](https://habrastorage.org/files/a12/a86/068/a12a86068f7943a2ae9c28e318901049.gif)
2. Активация псевдо-классов DOM-элемента
Если вам нужно посмотреть, как конкретный DOM-элемент ведет себя в различных состояниях (
active
, focus
, hover
и visited
), можно активировать любое из них в Chrome DevTools. Для этого кликните правой кнопкой мыши по нужному элементу в панели «Elements», а затем выберите «Force element state». Есть и другой способ: в панели характеристик элемента в разделе «Styles» кликните на кнопку «Toggle element state» и выберите конкретное состояние.После изменения состояния узла, рядом с его открывающим тегом в DOM-дереве появится небольшой оранжевый индикатор-кружок. В каких-то случаях он появляется и у закрывающего тега (если он не слишком далеко ушел из поля зрения).
Прим. перев.: в последних версиях разработчики браузера немного изменили контекстное меню узла в панели «Elements». Теперь состояния элемента может быть выбрано из него напрямую без промежуточного «Force element state». А оранжевый индикатор сам по себе стал кликабельным и открывает то же самое меню.
Посмотреть скринкаст![](https://habrastorage.org/files/603/df5/d2b/603df5d2bdac4405a4e69eaee6184677.gif)
![](https://habrastorage.org/files/603/df5/d2b/603df5d2bdac4405a4e69eaee6184677.gif)
3. Повтор сетевого запроса при помощи cURL
Каждый ресурс, отображаемый в панели «Network», имеет свое собственное контекстное меню, содержащее пункт «Copy as cURL». При выборе этого пункта в буфер обмена попадет команда, полностью эмулирующая выбранный запрос через утилиту «cURL» (включая заголовки запроса). Вставьте ее в терминал, подредактируйте по необходимости и запускайте.
Прим. перев.: Чтобы повторить XHR-запрос без использования cURL, найдите его в панели «Network» и выберите пункт «Reply XHR» в его контекстном меню.
Посмотреть скринкаст![](https://habrastorage.org/files/62f/e90/d08/62fe90d0814e441894835dae86bca6b9.gif)
![](https://habrastorage.org/files/62f/e90/d08/62fe90d0814e441894835dae86bca6b9.gif)
4. Запуск сохранённых блоков кода (сниппетов) на любой веб-странице
В DevTools есть функционал под названием «Сниппеты» (Snippets). При помощи него вы можете создавать или удалять код, который потом можно будет исполнить в контексте веб-страницы. Это гораздо удобней перепечатывания кода в панели «Console». Просто попробуйте:
- откройте панель «Source» → «Snippets» (она в левой вкладке);
- в контекстном меню этой вкладки выберите «New»
- введите подходящее имя для своего сниппета;
- запускайте его при помощи выбора пункта «Run» в меню сниппета (или «Cmd+Enter»).
Заметьте, что вам доступно полноценное многострочное редактирование и подтверждения случайного закрытия сниппета без сохранения.
Посмотреть скринкаст![](https://habrastorage.org/files/ac8/86d/458/ac886d45826849ad86189edc98561ed3.gif)
![](https://habrastorage.org/files/ac8/86d/458/ac886d45826849ad86189edc98561ed3.gif)
5. Отслеживание изменений файлов через DevTools
Функция «Local modifications» позволяет вам отслеживать изменения файлов, которые были сделаны через DevTools. После изменения и сохранения файла через DevTools, выберите «Local modifications» в контекстном меню файла в левой колонке панели «Sources» и вы увидите список изменений, каждое из которых можно откатить.
Посмотреть скринкаст![](https://habrastorage.org/files/a29/633/738/a29633738b48494cb05b3255f9b349e0.gif)
![](https://habrastorage.org/files/a29/633/738/a29633738b48494cb05b3255f9b349e0.gif)
6. Простая запись действий страницы
Когда вам нужно записать действия страницы при помощи панели «Timeline», открепите окно DevTools от основного окна браузера и поместите его так, чтобы кнопка начала записи располагалась как можно ближе к анализируемому участку страницы. Как альтернатива используете горячие клавиши «Cmd+E», чтобы начать/остановить запись поведения.
Прим. перев.: такое расположение окна DevTools позволит избежать лишнего шума, возникающего пока вы ведете мышкой от кнопки записи до нужной части приложения.
Посмотреть скринкаст![](https://habrastorage.org/files/cc8/bb7/898/cc8bb78983fa4710939ed86fb08b666c.gif)
![](https://habrastorage.org/files/cc8/bb7/898/cc8bb78983fa4710939ed86fb08b666c.gif)
7. Поиск элементов DOM-дерева при помощи CSS-селекторов
Чтобы быстрее найти интересующий вас DOM-узел в панели «Elements», используйте поиск по CSS-селекторам. Поиск вызывается сочетанием клавиш «Cmd+F».
Посмотреть скринкаст![](https://habrastorage.org/files/96d/c21/984/96dc21984bed41a6b1178ede28a4fd75.gif)
![](https://habrastorage.org/files/96d/c21/984/96dc21984bed41a6b1178ede28a4fd75.gif)
8. Копирование изображения в формате Data URI
Чтобы скопировать ссылку на изображение в формате Data URI (закодированную в base64), найдите нужную картинку в панели «Resources» и из ее контекстного меню (в правой панели) выберите «Copy Image as Data URL».
Прим. перев.: это может быть полезно если вы, например, не хотите отправлять запрос за картинкой на сервер, а использовать ее base64-копию из CSS.
Посмотреть скринкаст![](https://habrastorage.org/files/536/aee/9a9/536aee9a957944059a01478d549d2db0.gif)
![](https://habrastorage.org/files/536/aee/9a9/536aee9a957944059a01478d549d2db0.gif)
9. Переход к нужной строке при открытии файла
Переходите сразу к нужному месту в открываемом через команду «Cmd+O» в панели «Sources» файле, указывая желаемую позицию в формате
:номер_строки:номер_столбца
. Попробуйте:- нажмите «Cmd+O» в открытом в панели «Sources» файле;
- введите «:5:9»
- вас перебросит к символу 9 строки 5.
Посмотреть скринкаст![](https://habrastorage.org/files/cfd/db1/307/cfddb13074bc4c6ebaf08b3a9bce49cb.gif)
![](https://habrastorage.org/files/cfd/db1/307/cfddb13074bc4c6ebaf08b3a9bce49cb.gif)
10. Упрощенная навигация между правками
Панель «Sources» запоминает места всех изменения скриптов и позволяет вам циклически перемещаться между ними при помощи «Alt -» (назад) и «Alt +» (вперёд).
Посмотреть скринкаст![](https://habrastorage.org/files/90b/195/fb5/90b195fb5b3c4a7c9b79fc296fa7adb9.gif)
![](https://habrastorage.org/files/90b/195/fb5/90b195fb5b3c4a7c9b79fc296fa7adb9.gif)
11. Копирование ответа на сетевой запрос
Кроме копирования заголовков запроса за сетевым ресурсом или заголовков ответа на него, вы можете скопировать весь ответ.
Посмотреть скринкаст![](https://habrastorage.org/files/42f/ab4/75c/42fab475cdb64684b9db17bfa8454e27.gif)
![](https://habrastorage.org/files/42f/ab4/75c/42fab475cdb64684b9db17bfa8454e27.gif)
12. Работа с несколькими курсорами при редактировании скриптов
Вы можете использовать несколько курсоров одновременно для параллельного редактирования разных участков кода в панели «Sources». Для этого, зажав «Cmd», кликайте в те места, куда хотите поставить курсоры. Отменить выделение вы можете при помощи «Cmd+U».
Посмотреть скринкаст![](https://habrastorage.org/files/f58/5a1/8f6/f585a18f65f64617b8bfe10becbc8c75.gif)
![](https://habrastorage.org/files/f58/5a1/8f6/f585a18f65f64617b8bfe10becbc8c75.gif)
13. Блочное выделение
Вы можете использовать выделение блоком в панели «Sources», удерживая «Alt» во время перемещения мыши.
Посмотреть скринкаст![](https://habrastorage.org/files/4d6/f7b/69d/4d6f7b69dcf84c02ac77a1620b67d770.gif)
![](https://habrastorage.org/files/4d6/f7b/69d/4d6f7b69dcf84c02ac77a1620b67d770.gif)
14. Быстрый мониторинг событий в консоли
Вы можете логировать все события объекта, используя метод
monitorEvents(object [, events])
из Command Line API. При наступлении события его объекты будут выведены в консоль. Это удобно, когда вы не можете вспомнить свойства конкретного события.Посмотреть скринкаст![](https://habrastorage.org/files/c88/e43/fce/c88e43fce87c447bae91b981d1507e87.gif)
![](https://habrastorage.org/files/c88/e43/fce/c88e43fce87c447bae91b981d1507e87.gif)
15. Доступ к выбранному DOM-узлу в консоли
Чтобы использовать в консоли DevTools выбранный в панели «Element» DOM-узел, просто наберите
$0
. Так же можно использовать конструкцию $_
, которая вернет значение самого последнего вычисленного в консоли выражения.Прим. перев.: Панель «Sources» запоминает 5 последних выбранных элементов, доступ к которым осуществляется через
$0
, $1
, $2
, $3
, $4
. Эти конструкции являются полноценными Javascript-выражениями, поэтому поддерживают любые операции, например, вызов метода $0.appendChild(...)
.Посмотреть скринкаст![](https://habrastorage.org/files/558/34a/862/55834a862a644ff3ab23b479cffbca93.gif)
![](https://habrastorage.org/files/558/34a/862/55834a862a644ff3ab23b479cffbca93.gif)
16. Отслеживание незавершенных сетевых запросов при помощи фильтра is:running
Поиск в панель «Network» позволяет фильтровать активные (до сих пор не получившие ответа) запросы, при помощи выражения
is:running
. Ещё можно использовать такие фильтры, как status-code
, method
, domain
и другие.Прим. перев.: на сегодняшний день в Chrome Canary 48 поддерживаются следующие фильтры:
domain
, has-response-header
, is:running
, larger-than
, method
, mime-type
, mixed-content
, scheme
, set-cookie-domain
, set-cookie-name
, set-cookie-value
, status-code
.Посмотреть скринкаст![](https://habrastorage.org/files/0a0/c71/423/0a0c7142372b413091467606f68d6c7a.gif)
![](https://habrastorage.org/files/0a0/c71/423/0a0c7142372b413091467606f68d6c7a.gif)
Ждите следующих частей!