Пользователь
0,0
рейтинг
14 мая 2012 в 08:41

Разработка → Вся правда о Chrome (и не только) Web Inspector. Часть 1

Я постараюсь сделать самое полное и подробное описание возможностей Web Inspector, на русском языке.
В первой серии мы залезем в настройки, посмотрим, что умеет консоль и поиграемся с панелью «Elements».

Так как Web-Inspector не переведен на Русский, я буду сохранять оригинальные названия.


В качестве бонуса, приложу скриншот одной и самых первых версий, из далекого 2006го.




Какой версией пользоваться?


Сейчас существует несколько версий Web Inspector:
  1. Все самые новые функции получает Google Chrome Canary Build.
  2. Когда все стабилизируется, их добавляют в Ночные сборки WebKit, а затем в Стабильный Google Chrome.
  3. Safari в этом смысле — наиболее консервативный браузер и отстает от Google Chrome Canary Build примерно на год.

Я буду использовать Google Chrome Canary Build , и, если Web Inspector — ваш основной инструмент для отладки, то рекомендую именно эту версию (Если у вас не Windows, скачайте Chromium )

Почти все описанное здесь, тем не менее, будет работать и в других версиях Web Inspector.


Запускаем Web Inspector


Есть несколько способов открыть Web Inspector:

  • Control + SHIFT + I — Открывает панель элементов.
  • Control + SHIFT + J или F12 — Открывает консоль
  • Control + SHIFT + C — Позволяет выбрать элемент, с помощью мыши, в самом документе и открыть его во вкладке «Elements»
  • Можно нажать на любом элементе на странице правой кнопкой мыши и выбрать «Inspect Element (Просмотр кода элемента)».
  • Можно открыть Web Inspector из меню: Иконка с ключом -> Инструменты -> Инструменты разработчика (Tools -> Developer tools)


Вы можете открыть Web-Inspector для Web Inspector, для этого нужно открыть его в отдельной окошке:, а затем запустить его снова одним из приведеннм выше способов.

404tesla


Настраиваем Web Inspector


Экспериментальные функции


Все новые инструменты сначала попадают в «экспериментальные функции». Чтобы включить их, зайдите в «about:flags», найдите там опцию Enable Developer Tools experiments (Включить экспериментальные инструменты разработчика).

После этого перезапустите браузер.
Будьте осторожны с экспериментальными функциями, они могут работать не так как ожидается и вызывать ошибки.

Я буду рассматривать экспериментальные функции в одной из следующих статей.


Настройки


Давайте откроем диалог настроек нажав на эту кнопку , в правом нижнем углу и посмотрим, что там есть интересного.



Dock to the right


Закрепляет Web Inspector в правой части страницы.
На больших мониторах это позволяет лучше использовать горизонтальное пространство, к тому же, позволяет легко менять широту видимой области браузера, что полезно для быстрого тестирования media queries.




По умолчанию Web Inspector снизу. Можно вытащить его в отдельное окошко, нажав на


Disable Cache


Выключает кэш. Весьма полезная опция, при отладке скриптов и стилей.
Еще можно очистить кэш из панели «Network», нажав там правой кнопкой и выбрав «Clear Browser Cache»


Disable JavaScript


Хочу отметить эту функцию здесь, потому что появилась она совсем недавно. Она… выключает Javascript.


Override device metrics


Более серьезный способ, для тестирования media queries (англ.). Позволяет задать ширину и высоту экрана, а так же маштаб шрифта. В идеале хотелось бы несколько готовых пресетов для популярных мобильных платформ.





Emulate touch events


Позволяет эмулировать touch-события. Полезно, для тестирования мобильных приложений.


Enable source maps


Представьте себе, что можно было бы выкладывать на сайт минифицированную/собранную из частей/скомпилированную версию скрипта, а браузер сам бы мог найти исходник для отладки.

Source maps (англ.), позволяют указать браузеру способ найти исходный файл.
Идея отличная, по пока позволяет работать только с Javascript.
В будущем обещают поддержку CoffeeScript, LESS, SASS и других чудо-технологий.


Log XMLHttpRequests


Показывает в консоли XHR запросы. (англ.)


Preserve log upon navigation


Если выбрана эта опция, содержимое консоли будет сохранено даже при обновлении страницы.


Горячие клавиши


Чтобы посмотреть список горячих клавиш, откройте любую вкладку кроме консоли и нажмите там "?" (В английской раскладке).



Обратите внимание, что если окошко не влезает полностью, оно обрезается и может скрыть часть информации.

Здесь все довольно очевидно, важно знать, что практически везде работает автодополнение.


Консоль


Консоль позволяет вводить и исполнять любые Javascript команды. Если вы хотите написать выражение из нескольких строк используйте SHIFT+Enter.

Для консоли выделена отдельная вкладка, но она активно взаимодействует с другими, поэтому ее можно вызвать из любой другой вкладки, нажав клавишу Esc. При этом текст, который вы начали набирать сохраняется.

Консоль можно использовать не только по прямому назначению.
  • Она отлично помогает в качестве калькулятора, при несложных рассчетах
  • В качестве игрального кубика: Math.ceil(Math.random()*6)
  • В качестве быстрой записаной книжки: localStorage.setItem(0, «Номер телефона»);
Если вы знаете какие-то еще нетривиальные способы использования консоли, отметьтесь пожалуйста в комментариях, я вам буду весьма благодарен.

Как и везде, в консоли есть автодополнение. Сначала, может быть не совсем очевидно, как оно работает.
  • Tab работает только когда остался лишь один вариант дополнения
  • Если вариантов несколько, вы можете выбрать любой и нажать вправо (или просто нажать мышкой)


Что показывать


Можно выбрать, что именно хотим видеть в консоли с помощью этой панели снизу:



Можно выбрать два элемента, если зажать CTRL. Здесь же можно выбрать фрейм, с которым мы хотим работать.


Избавляемся от сообщений об ошибках в расширениях


Если у вас установлены расширения, содержащие ошибки, эти ошибки будут постоянно отображаться в консоли.
К сожалению, в данный момент нет простого способа их отключить. В качестве временных мер можно:

  • Запускать Chrome в Incognito Mode (CTRL+SHIFT+N)
  • Использовать для откладки другой профиль, без расширений. Для этого нужен другой Google account. Чтобы добавить профиль нажмите иконку с гаечным ключом -> Настройки -> добавить пользователя (settings add user).


Изменяем размер шрифта


Почему-то CTRL+Scroll в консоли не работает.

Зато можно использовать CTRL + для увеличения шрифта, CTRL — для уменьшения и
CTRL + 0 для изначального масштаба.
У меня это работает только в Chrome Canary build, в стабильной версии увеличивается только сам документ.



Команды консоли


У консоли есть свои собственные команды, Так как Web Inspector написан на JS, список всех команд можно посмотреть в самой консоли, введя console._commandLineAPI. Давайте рассмотрим самые интересные из них.






Очищаем консоль


Есть несколько способов очистить консоль:

  • Командой clear();
  • CTRL+L (Эта комбинация в Chrome переводит фокус на адресную строку. Если она не работает в консоли, нажмите в любое место документа, а потом кликните на консоль).
  • Нажать правой кнопкой и выбрать «Clear console»



Взаимодействие со вкладкой «Elements»


В переменных $0-$4 — Последние пять выбранных элементов, в порядке выбора.
Любой DOM элемент, выведенный в консоли, можно открыть во вкладке «Elements», нажав правой кнопкой мышки.




Выбираем элементы


Консоль поддерживает несколько дополнительных способов выбрать элементы, без каких либо дополнительных библиотек.
  • $("ID") — Выбор элемента по идентификатору.
  • $$("selector") — Выбор элемента по CSS селектору.
  • $x("selector") — Выбор элемента по XPath-селектору.

Обратите внимание, что если на сайте используется какая-то Javascript-библиотка, то эти функции
могут быть перезаписаны. Например на Хабре $ это jQuery.


Изучаем объекты


Есть несколько функций, ползволяющих узнать больше, об элементе. В основном они дублируют функционал панелей из вкладки «Elements».

  • inspect() — Открывает DOM-Дерево и находит там элемент
  • dirxml() — Выводит элемент в виде xml
  • dir() — Показывает список свойств элемента
  • keys() — Выбирает все ключи из списка dir()
  • values() — Выбирает все значения из списка dir()


Следим за событиями


Можно следить за всем, что происходит с элементом, с помощью функции monitorEvents( element )




С помощью второго аргумента можно выбрать тип событий, за которыми вы ходите следить:

  • "mouse" — для mousedown, mouseup, click, dblclick, mousemove, mouseover, mouseout, mousewheel
  • "key" — для keydown, keyup, keypress, textInput
  • "touch" — для touchstart, touchmove, touchend, touchcancel (Если включены в настройках)
  • "control" — для resize, scroll, zoom, focus, blur, select, change, submit, reset
  • Если не указывать второй аргумент, то все вышеперечисленные события плюс load, unload, abort, error, select, change, submit, reset, focus, blur, resize, scroll, search, devicemotion, deviceorientation.

Остановить это безумие можно с помощью функции unmonitorEvents( element )


Копируем информацию в буфер обмена


Результат любого выражения можно сразу скопировать в буфер обмена, используя функцию Copy(). Приятно и может сэкономить немного времени.


Вкладка «Elements»


Эта панель содержит в себе все DOM-Дерево нашей страницы, обновляющееся в режиме реального времени.



Каждый раз, когда на странице изменяются элементы, они обновляются в дереве и наоборот.

Если вы хотите выбрать какой-то элемент из документа, нажмите на кнопку с лупой внизу или CTRL+SHIFT+C и выберите любой элемент.
При наведении мышкой будут показан CSS пусть до элемента, его размеры и отступы.


Путь до элемента


В самом низу панели можно увидеть путь до Элемента. Можно выбрать любой родительский элемент, кликнув на него.



Работа с деревом


Передвигаться по дереву можно стрелками (если вы в другой секции, то можно вернуть фокус, с помощью CTRL+ вверх/вниз).


Редактирование


Чтобы изменить любой атрибут или значение, дважды кликните на элемент, или нажмите Enter
и доберитесь до него с помощью кнопки Tab (SHIFT+Tab).
Можно так же изменить весь HTML-код элемента, нажав F2.

Вы можете выбрать любой элемент и удалить его нажав Delete, что весьма полезно для убийства рекламы, пропущенной адблоком.


Drag&Drop


Можно перетащить элементы мышкой из одного контейнера в другой и они автоматически перенесутся в самом документе.
Также любой элемент можно перетащить в ваш текстовый редактор. Правда при этом скопируется только код самого элемента, все что в него вложено потеряется.


Контекстное меню


Нажав на элемент правой кнопки мышки, можно скопировать его HTML-код, или XPath-путь и установить DOM-брейкпоинты.


Подробная информация


Выделив элемент, можно посмотреть информацию про него, в панели справа.

Computed style


Список CSS-стилей, примененных к элементу. Если поставить галку в «Show inherited», то отобразятся все стили, включая браузерные.


Styles


Список правил, примененных к элементу. Их можно менять и изменения мгновенно появятся в документе.
Важно понимать, что все изменения будут потеряны, после обновления браузера. .

Можно выключить любое выражение, убрав галку из чекбокса слева.

Раздел element.style показывает стили прописанные в style атрибуте в HTML коде документа,
а раздел Matched CSS Rules показывают все селекторы, заданные с CSS файлах и совпавшие с выбранным элементом.

Перемещаться между свойствами и значениями можно можно с помощью Клавиши Tab (SHIFT+Tab), чтобы вернуться назад).


Добавление правил и выражений

Вы можете добавить свой селектор, нажав на кнопку , а удалить потом не сможете.

Можно добавить новое выражение в уже имеющийся селектор, нажав на закрывающую фигурную скобку правила (или начав изменять последнее выражение нажать Tab).


Псевдоклассы

Нажав на эту кнопку , и проставив галки, вы сможете задать пэлементу псевдоклассы :active, :focus, :hover и :visited.


Отображение цветов

Нажав на кнопку с шестеренкой ,As authored — покажет цвета в том формате котором они были заданы.


Изменение числовых значений

Числовые значения можно изменять с помощью клавиатуры.

  • Alt + Вверх/Вниз изменяет значение на 0.1
  • Вверх/Вниз изменяет значение на 1
  • SHIFT + Вверх/Вниз или Page Down/Page Up изменяет значение на 10
  • SHIFT + Page Down/Page Up изменяет значение на 100.

Если нажать на квадратик рядом с цветом, можно выбрать цвет из удобного диалога. Нажав на числовое значение, можно ввести цвет вручную.


Metrics


Здесь можно увидеть размеры и отступы элемента (А если для элемента задан position, то и положение).

Вы можете изменить здесь любое значение, нажав на него дважды.

Интересно, что все размеры показываются в пикселях, даже если вы пропишете размеры в EM, они будут переведены в пиксели автоматически.


Properties


В этом разделе показаны все свойства объекта, что, наверное, полезно в образовательных целях. Их так же можно менять, но мне это пока ни разу не пригодилось


DOM-Breakpoints


Здесь список установленных Dom-Брейкпоинтов.Можно быстро найти элемент, кликнув на название, выключить брейкпоинт, убрав галку, удалить брейкпоинт, нажав на него правой кнопкой мыши.

DOM-Брейкпоинты позволяют отслеживать изменения, происходящие с DOM-элементом или его атрибутами. Мы будем разбираться с ними подробнее, когда доберемся до отладки скриптов.


Сохранение изменений


Web Inspector позволяет нам легко модифицировать <font colorьфкщщ="#663344">CSS код. К сожалению, простого способа, позволяющегобыстро сохранить изменения не существует. Есть несколько вариантов

  • Просто скопировать все изменения в вашу IDE.
  • Изменения в CSS (кроме заново созданных правил) сохраняются в соотвествующих файлах. Нажав на «имя файла: номер строки» справа от селектора
  • Есть расширение от ELV1S: ChromeDevtools Autosave (англ.), оно работает только локально и требует для установки сервера (англ.) на Node JS (англ.) зато позволяет сохранять изменения в JS и CSS автоматически.


Что дальше?


Немного полезных ссылок


Ссылки в случайном порядке, к сожалению, все на английском.


В следующий серии


Это только первая часть статьи. Оставайтесь с нами и вы узнаете
  • Что делают оставшиеся 5 панелей.
  • Отладка Javascript, debugger; и команды console
  • Как получить Base64 код картинки штатными средствами Web Inspector.
  • Кто такие «Show shadow DOM», «Snippets support» и «Show styles panel»
  • Как превратить минифицированную версию срипта в прекрасную.
  • Как отлаживать наш код с помощью JS, DOM, XHR и Event Listener брейкпоинтов.
  • Как правильно и максимально эффективно использовать консоль из наших скриптов?
  • Как отлаживать приложения для Ipad/Iphone/Androind смартфона с помощью Web Inspector?
  • Как подключить консоль для моего любимого Coffee Script? А показывать в консоли ошибки PHP?
  • Что за новый plugin-API для Web Inspector, и что с ним делать.
  • Как посмотреть HTTP запросы.
  • Как получилось, что dev-tools не переведены на русский.


Я часто использую Web Inspector в работе, но могут быть вещи, которые я не знаю, или забыл упомянуть, поэтому я буду рад любым исправлениям или дополнениям.


До следующей серии!
Kirill Cherkashin @z6Dabrata
карма
89,5
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Спецпроект

Самое читаемое Разработка

Комментарии (36)

  • +6
    Ёмко. Спасибо.
  • +2
    Возможно ли осуществлять поиск по содержимому Response на вкладке Network? И возможно ли заставить Web Inspector не уменьшать размер страницы, а вести себя как плагин Firebug Lite?
    • 0
      Поиск вообще не очень предсказуемо работает, буду писать об этом в следующих выпусках, все внимательно оттестируем и доложим!
      • 0
        Не совсем понял, насчет размера страницы, возможно вам нужна вот эта кнопка?
  • –2
    Отлично! Установил, прочитав статью. Сейчас потестим.
  • –6
    спасибо, все не осилил, но в избранное добавил
  • +1
    «Если вы знаете какие-то еще нетривиальные способы использования консоли, отметьтесь пожалуйста в комментариях, я вам буду весьма благодарен.»

    я еще консоль использую для изменения состояния внутренних объектов своего приложения, прикрепив их к window
  • +3
    Не знал про фичу «Dock to the right», очень нужная. Спасибо
  • +1
    >Safari… наиболее консервативный браузер
    Safari можно запускать под свежесобранным WebKit nightly.
  • 0
    Как можно работать с сетью в веб-инспекторе в хроме, либо в драгонфлай в опере, если при редиректе либо клику по ссылке все старые хттп запросы пропадают? Отправляю пост данные на форму, она редиректит и все, пост данных не видно. Дебагер мля…
    • +3
      Просто:
      image
    • 0
      Nc Soft, Во вкладке «Network» есть кнопочка , если ее нажать, то вся информация будет сохраняться.
      • +4
        Прошу прощение за дублирование информации.
  • 0
    как сохранить изменения в том же CSS?
  • 0
    полезно
  • +1
    Думаю, что многим было бы интересно ещё почитать и про не очень известный Speed Tracer, который сейчас тоже только в Canary Build.

  • +1
    По большому счету информация актуальна и для Safari.
    PS Правда в Safari 5.2 инспектор уже другой.
  • 0
    Source maps (англ.), позволяют указать браузеру способ найти исходный файл.
    Идея отличная, по пока позволяет работать только с Javascript.
    В будущем обещают поддержку CoffeeScript, LESS, SASS и других чудо-технологий.

    Было б отлично делать отладку Coffeescript прямо в браузере (хотя генерируемый код и так весьма хорош).
  • +1
    Отлично, спасибо, узнал пару новых для себя вещей. С нетерпением жду продолжения.
  • +1
    Единственным недостатком считаю невозможность увеличить размер шрифта (ваш способ не работает у меня) самих Developer Tools, да и консоли тоже.
    • +1
      В стабильной версии это пока не работает.
      • 0
        а, спасибо, теперь понятно
  • +2
    На этом скриншоте:
    image
    показан прекрасный момент — <top frame>. Этот чудесный переключатель позволяет выполнять JS из консоли для любого фрейма на странице. Такой штуки я не нашел в фаербаге и она меня очень выручала, когда я занимался интеграцией одного приложения в разные социальные сети (практически везде используются iframe, достучаться до которых в силу кроссдоменной политики нельзя). Сейчас эта фича уже есть в стабильном хроме, но именно из-за неё когда-то начал использовать Canary.
    • 0
      Вот это круто, спасибо!
  • +2
    Почему-то CTRL+Scroll в консоли не работает.

    Шрифт можно так же увеличить путём вызова DevTools в DevTools (повторно нажав F12) и там выбрать любой элемент в консоли и накрутить размер шрифта в CSS.

    Про ctrl+ и ctrl- не слышал, в стабильной не работает, поэтому изобрёл велосипед, описанный выше. Надеюсь, пригодится.
  • 0
    А я и не знал, что пользуюсь таким мощным инструментом. Спасибо, что раскрыли мои глаза :)
  • +1
    Иногда использую консоль для напоминалок через alert и setTimeout/setInterval.
    • 0
      Отлично!
  • 0
    Пустой element.style во вкладке styles порой раздражает. Не подскажете, как от него избавиться?
  • 0
    А вы еще не решили, когда там будет новая серия? :)
  • 0
    Большое спасибо за такой подробный гайд! Не поленились поделиться опытом!
    Подскажите пожалуйста, можно ли как-то перебиндить (переназначить) Control + SHIFT + I на что-то типа F1? Я с длинными пальцами не могу дотянуться… кто вообще придумал данные хоткеи… Я конечно не удивлюсь если кто-то пользуется правыми Control и Alt, но это уверен очень узкий круг девелоперов.
    Иногда нужно просто открыть инспектор и посмотреть последний выбранный элемент, мышкой это делать долго, приходиться самым ближним хоткеем Ctrl+Shift+C снова выбирать какой либо элемент.
    • 0
      Ещё я не пойму как можно разрабатывать в браузере в котором куча багов, который отображает контент иначе? Что бы потом были лишние проблемы с cross браузерностью обычного хрома. Ведь дев хром вижу только я. Лучше уже сэкономить себе время и разрабатывать изначально в браузере который не врет и которым пользуется твой заказчик.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.