Взаимодействие с DOM с помощью консоли
Средство "Консоль" — это отличный способ взаимодействия с веб-страницей в браузере. В средствах разработки вы обычно взаимодействуете с DOM с помощью средства "Проверка " для выбора элементов и с помощью средства "Элементы" для изменения модели DOM, например для добавления или изменения атрибутов или стилей элементов.
Средство Console также можно использовать для взаимодействия с DOM с помощью кода JavaScript. Например, можно найти элементы в дереве DOM и управлять ими с помощью API DOM.
Дополнительные сведения о средстве проверки см. в статье Анализ страниц с помощью средства проверки. Дополнительные сведения о средстве Elements см. в статье Проверка, изменение и отладка HTML и CSS с помощью средства Elements.
Поиск элемента в дереве DOM
Чтобы найти элемент в дереве DOM из средства Консоли , выполните следующие действия:
Перейдите на веб-страницу, которую вы хотите проверить. Например, откройте демонстрационную страницу взаимодействия DOM в консоли DevTools в новой вкладке или окне.
Нажмите клавиши CTRL+SHIFT+J (Windows, Linux) или COMMAND+OPTION+J (macOS). Средство "Консоль" откроется в средствах разработки рядом с веб-страницей.
Введите или вставьте следующий код в консоль и нажмите клавишу ВВОД.
document.querySelector('main');
Элемент
<main>
из дерева DOM отображается в консоли:В консоли наведите указатель мыши на результирующий HTML-элемент
<main>
или нажмите клавиши SHIFT+TAB. На отображаемой веб-странице DevTools выделяет соответствующий<main>
элемент:
Изменение модели DOM веб-страницы
Вы можете внести изменения в дерево DOM веб-страницы с помощью средства Консоли . В этом примере вы задали значение атрибута элемента DOM с помощью консоли, чтобы повлиять на стили элемента: вы добавляете серый фон к <h1>
заголовку страницы.
Перейдите на веб-страницу, которую вы хотите изменить. Например, откройте демонстрационную страницу взаимодействия DOM в консоли DevTools в новой вкладке или окне.
Нажмите клавиши CTRL+SHIFT+J (Windows, Linux) или COMMAND+OPTION+J (macOS). Средство "Консоль" откроется в средствах разработки рядом с веб-страницей.
Вставьте следующий код в консоль:
document.querySelector("h1").style.backgroundColor = "lightgrey";
За заголовком страницы отображается серый фон:
Получение ссылки на элемент
На сложной веб-странице может быть трудно найти нужный элемент для изменения. Но вы можете использовать средство проверки , чтобы помочь вам. Предположим, вы хотите изменить текст первой ссылки в элементе Section 1 отображаемой страницы:
Чтобы получить ссылку на элемент link, который требуется изменить, выполните следующие действия:
Перейдите на веб-страницу, которую вы хотите проверить. Например, откройте демонстрационную страницу взаимодействия DOM в консоли DevTools в новой вкладке или окне.
Нажмите клавиши CTRL+SHIFT+J (Windows, Linux) или COMMAND+OPTION+J (macOS). Средство "Консоль" откроется в средствах разработки рядом с веб-страницей.
Щелкните инструмент Проверка (), а затем на отображаемой веб-странице наведите указатель мыши на ссылку, например Ссылку 1:
Щелкните ссылку с наведенным курсором на отрисованную веб-страницу. DevTools открывает инструмент Элементы с выбранным соответствующим элементом:
Нажмите кнопку
...
рядом с элементом в дереве DOM и выберите Копировать>путь JS:Ниже приведен путь JS, который вы скопировали:
document.querySelector("body > main > section:nth-child(1) > ul > li:nth-child(1) > a")
Приведенный выше путь представляет собой селектор CSS, указывающий на элемент link, выбранный с помощью средства проверки .
В консоли вставьте скопированный путь к JavaScript, но пока не нажимайте клавишу ВВОД .
Измените текст ссылки
Updated link
на . Для этого добавьте.textContent = "Updated link"
в путь JavaScript, который вы вставили ранее:
Используйте все API-интерфейсы DOM, которые нужно изменить в дереве DOM в консоли. Чтобы сделать его более удобным, консоль поставляется с несколькими вспомогательными служебными методами.
Полезные служебные функции консоли
Многие удобные методы и сочетания клавиш доступны в качестве служебных функций в средстве консоли . Некоторые из этих служебных функций очень полезны для взаимодействия с деревом DOM веб-страницы и описаны ниже. Дополнительные сведения см. в разделе Функции и селекторы средств консоли.
Получение элементов с помощью функций и сочетаний клавиш $
Символ $
имеет особое значение в средстве Консоли :
Функции
$()
и$$()
являются более короткими версиямиdocument.querySelector()
функций иdocument.querySelectorAll()
.$0
,$1
,$2
,$3
и$4
— это сочетания клавиш для элементов, которые вы недавно выбрали в инструменте Элементы .$0
всегда является последним выбранным элементом. Таким образом, в предыдущем примере Получение ссылки на элемент после выбора элемента с помощью средства "Проверка " можно изменить его текст с помощью$0.textContent = "Updated link"
того же эффекта.$x()
позволяет выбрать элементы DOM с помощью XPath.
Получение всех ссылок со страницы
В этом примере вы используете служебную $$()
функцию для вывода списка всех ссылок на веб-странице. Затем вы используете эту функцию вместе с методом filter()
массива, чтобы избавиться от ссылок, которые не начинаются с https
(например, ссылок привязки на текущей веб-странице), чтобы отфильтровать список, чтобы включить только внешние ссылки.
Перейдите на веб-страницу, с которой вы хотите получить ссылки. Например, откройте демонстрационную страницу взаимодействия DOM в консоли DevTools в новой вкладке или окне.
Нажмите клавиши CTRL+SHIFT+J (Windows, Linux) или COMMAND+OPTION+J (macOS). Средство "Консоль" откроется в средствах разработки рядом с веб-страницей.
Чтобы получить список всех ссылок на странице, введите следующий код в консоли и нажмите клавишу ВВОД:
$$('a');
$$('a')
является сокращением отdocument.querySelectorAll('a')
.Разверните список ссылок, зарегистрированных в консоли, а затем разверните первый объект ссылки. Отображаются свойства ссылки:
Чтобы уменьшить объем информации, возвращаемой функцией
$$()
, используйтеmap()
метод array. Методmap()
работает, так как$$()
функция возвращает массив.$$('a').map(a => { return {url: a.getAttribute("href"), text: a.innerText} });
Приведенный выше код возвращает массив всех ссылок, где каждый объект ссылки сопоставляется с объектами
url
JavaScript со свойствами иtext
.Разверните несколько возвращаемых объектов ссылки, чтобы увидеть их свойства:
Чтобы вывести список только внешних ссылок, используйте
filter()
метод массива, чтобы избавиться от ссылок, которые не начинаются сhttps
:$$('a').map(a => { return {url: a.getAttribute("href"), text: a.innerText} }).filter(a => { return a.url.startsWith("https"); });
Отображение элементов DOM в таблице
В предыдущем примере вы отображали список элементов со страницы в консоли. Элементы отображаются в виде массива JavaScript. Чтобы упростить использование списка элементов консоли, их можно отобразить в сортируемой таблице с помощью служебной console.table()
функции:
Перейдите на веб-страницу, которую вы хотите проверить. Например, откройте демонстрационную страницу взаимодействия DOM в консоли DevTools в новой вкладке или окне.
Нажмите клавиши CTRL+SHIFT+J (Windows, Linux) или COMMAND+OPTION+J (macOS). Средство "Консоль" откроется в средствах разработки рядом с веб-страницей.
Вставьте следующий код в консоль и нажмите клавишу ВВОД:
console.table($$('img'), ['src','alt'])
Список
<img>
элементов на веб-странице отображается в консоли в виде таблицы, а атрибуты каждого изображенияsrc
иalt
в виде столбцов:
Получение всех заголовков страниц и URL-адресов привязки
В этом примере вы получите все заголовки веб-страницы с атрибутом id
и создаете URL-адрес, указывающий на каждый заголовок.
Перейдите на веб-страницу, которую вы хотите проверить. Например, откройте демонстрационную страницу взаимодействия DOM в консоли DevTools в новой вкладке или окне.
Нажмите клавиши CTRL+SHIFT+J (Windows, Linux) или COMMAND+OPTION+J (macOS). Средство "Консоль" откроется в средствах разработки рядом с веб-страницей.
Скопируйте и вставьте следующий код в консоль и нажмите клавишу ВВОД:
let headings = $$('main [id]').filter(el => { return el.nodeName.startsWith('H'); }).map(el => { return `${el.innerText}: ${document.location.href}#${el.id}\n`; }); console.log(headings.join("\n"));
Результатом будет текст, содержащий содержимое для каждого заголовка раздела, за которым следует полный URL-адрес заголовка раздела:
Копирование сведений из консоли
В предыдущих примерах вы создали списки элементов и строк информации. Можно скопировать созданные сведения из консоли и вставить их в другое место.
Чтобы скопировать возвращаемое значение из выражения, выполняемого в консоли, используйте служебную copy()
функцию:
Перейдите на веб-страницу, с которой вы хотите извлечь некоторые сведения. Например, откройте демонстрационную страницу взаимодействия DOM в консоли DevTools в новой вкладке или окне.
Нажмите клавиши CTRL+SHIFT+J (Windows, Linux) или COMMAND+OPTION+J (macOS). Средство "Консоль" откроется в средствах разработки рядом с веб-страницей.
Чтобы скопировать список всех URL-адресов изображений на странице, введите следующий код в консоли и нажмите клавишу ВВОД:
copy($$('img').map(img => img.src).join("\n"));
Служебная
copy()
функция может принимать любой аргумент, который можно преобразовать в строку, и копировать его в буфер обмена. В этом примере аргумент представляет собой строку, содержащую все URL-адреса изображений на странице, разделенные новой строкой.Откройте текстовый редактор, например Visual Studio Code, а затем вставьте URL-адреса скопированного изображения в редактор:
Очистка консоли
При выполнении кода в консоли часто возникает много входных инструкций и выходных результатов, которые больше не нужно отображать. Консоль можно очистить с помощью служебной clear()
функции.
Вывод списка прослушивателей событий, назначенных элементу
Чтобы получить список всех прослушивателей событий, назначенных элементу, используйте служебную getEventListeners()
функцию:
Перейдите на веб-страницу, которую вы хотите проверить. Например, откройте демонстрационную страницу взаимодействия DOM в консоли DevTools в новой вкладке или окне.
Нажмите клавиши CTRL+SHIFT+J (Windows, Linux) или COMMAND+OPTION+J (macOS). Средство "Консоль" откроется в средствах разработки рядом с веб-страницей.
Щелкните средство "Проверка ", а затем на отображаемой веб-странице щелкните одно из изображений, чтобы выбрать его. Отобразится инструмент Элементы , а выбранный элемент изображения выделен в дереве DOM:
Откройте консоль , введите следующий код и нажмите клавишу ВВОД:
getEventListeners($0);
В приведенном выше фрагменте
$0
кода является ярлыком для выбранного<img>
в данный момент элемента в инструменте Элементы . СлужебнаяgetEventListeners()
функция возвращает объект, содержащий все прослушиватели событий, назначенные изображению.Разверните объект, а затем разверните единственный прослушиватель событий в списке, чтобы просмотреть свойства прослушивателя. Свойство
listener
показывает имя функции, вызываемой при активации события (в этом примереshowImage
):
Мониторинг событий, активированных на странице
Веб-сайты, использующие JavaScript, часто реагируют на события пользователей, происходящие в браузере. Отслеживать все события, активированные браузером, может быть трудно. Служебная monitorEvents()
функция позволяет отслеживать события, которые активируются на веб-странице.
Мониторинг всех событий в элементе
Чтобы начать мониторинг событий, выполните приведенные далее действия.
Перейдите на веб-страницу, которую вы хотите отслеживать. Например, откройте демонстрационную страницу взаимодействия DOM в консоли DevTools в новой вкладке или окне.
Нажмите клавиши CTRL+SHIFT+J (Windows, Linux) или COMMAND+OPTION+J (macOS). Средство "Консоль" откроется в средствах разработки рядом с веб-страницей.
Чтобы начать мониторинг событий, активируемых в элементе, например для одного из
<img>
элементов, введите следующий код в консоли и нажмите клавишу ВВОД:monitorEvents(document.querySelector('img'));
Приведенный выше код отслеживает все события, которые активируются в первом
<img>
элементе на странице.На отображаемой веб-странице наведите указатель мыши на изображение и наведите указатель мыши или вкладку на изображение с помощью клавиатуры. Такие события, как
mouseover
,mousemove
иfocus
регистрируются в консоли:
При мониторинге событий вы получаете журналы в консоли каждый раз, когда событие активируется браузером. Это может привести к возникновению большого шума в консоли. Вы также можете отслеживать определенные события в элементе.
Мониторинг определенных событий в элементе
Чтобы начать мониторинг определенных событий в элементе, выполните указанные действия.
Перейдите на веб-страницу, которую вы хотите отслеживать. Например, откройте демонстрационную страницу взаимодействия DOM в консоли DevTools в новой вкладке или окне.
Нажмите клавиши CTRL+SHIFT+J (Windows, Linux) или COMMAND+OPTION+J (macOS). Средство "Консоль" откроется в средствах разработки рядом с веб-страницей.
Чтобы начать мониторинг только событий указателя мыши, мыши и щелчка, которые активируются для первого
<img>
элемента на странице, введите следующий код в консоли и нажмите клавишу ВВОД:monitorEvents(document.querySelector('img'), ['mousedown', 'mouseup', 'click']);
На отображаемой веб-странице щелкните первое изображение.
mousedown
События ,mouseup
иclick
регистрируются в консоли:
Мониторинг событий в окне
Чтобы получать уведомление в консоли при каждом прокрутке или изменении размера окна:
Вставьте следующий код в консоль:
monitorEvents(window, ['resize', 'scroll']);
Прокрутите страницу и измените размер окна браузера. Консоль регистрирует события, которые активируются:
Остановить мониторинг событий
При мониторинге событий в DOM консоль может заиметь. Чтобы остановить события мониторинга, используйте служебную unmonitorEvents()
функцию:
unmonitorEvents(document.querySelector('img'));
unmonitorEvents(document.querySelector('img'), ['mousedown', 'mouseup', 'click']);
unmonitorEvents(window, ['resize', 'scroll']);
Сохранение скриптов взаимодействия DOM в виде фрагментов кода
Если вы несколько раз вводите один и тот же код взаимодействия DOM в консоли, вместо этого попробуйте сохранить код в виде фрагмента кода, а затем запустить его. Фрагменты кода сохраняются в средстве "Источники" , и их можно запустить оттуда или из меню "Команда". Дополнительные сведения см. в статье Запуск фрагментов Кода JavaScript на любой веб-странице.