chrome.devtools.inspectedWindow

refresh date: 2026-09-25 robots: noindex

Описание

Используйте chrome.devtools.inspectedWindow API для взаимодействия с проверяемым окном: получите идентификатор вкладки для проверяемой страницы, оцените код в контексте проверяемого окна, перезагрузите страницу или получите список ресурсов на странице.

Манифест

Чтобы использовать этот API, в манифесте нужно объявить следующие ключи:

"devtools_page"

Используйте chrome.devtools.inspectedWindow для взаимодействия с проверяемым окном: получите идентификатор вкладки для проверяемой страницы, оцените код в контексте проверяемого окна, перезагрузите страницу или получите список ресурсов на странице.

Общие сведения об использовании API инструментов разработчика можно найти в этой статье.

Обзор

Свойство tabId предоставляет идентификатор вкладки, который можно использовать с вызовами API chrome.tabs.*. Однако обратите внимание, что API chrome.tabs.* не предоставляется страницам расширений инструментов разработчика из соображений безопасности. Вам нужно будет передать идентификатор вкладки на фоновую страницу и вызвать функции API chrome.tabs.* оттуда.

Метод reload можно использовать для перезагрузки проверенной страницы. Кроме того, вызывающий объект может указать переопределение для строки агента пользователя, скрипт, который будет внедрен в начале загрузки страницы, или параметр для принудительной перезагрузки кешированных ресурсов.

Используйте вызов getResources и событие onResourceContent, чтобы получить список ресурсов (документов, таблиц стилей, скриптов, изображений и т. д.) на проверяемой странице. Методы getContent и setContent класса Resource, а также событие onResourceContentCommitted можно использовать для поддержки изменения контента ресурса, например внешним редактором.

Выполнение кода в проверяемом окне

Метод eval позволяет расширениям выполнять код JavaScript в контексте проверяемой страницы. Этот метод эффективен при правильном использовании и опасен при неправильном. Используйте метод tabs.executeScript, если вам не нужны специальные функции, которые предоставляет метод eval.

Вот основные различия между методами eval и tabs.executeScript:

  • Метод eval не использует изолированную среду для оцениваемого кода, поэтому состояние JavaScript проверяемого окна доступно коду. Используйте этот метод, когда требуется доступ к состоянию JavaScript проверяемой страницы.
  • Контекст выполнения оцениваемого кода включает API консоли инструментов разработчика. Например, в коде можно использовать inspect и $0.
  • Оцениваемый код может возвращать значение, которое передается обратному вызову расширения. Возвращаемое значение должно быть допустимым объектом JSON (может содержать только примитивные типы JavaScript и ациклические ссылки на другие объекты JSON). Будьте особенно осторожны при обработке данных, полученных с проверяемой страницы. Контекст выполнения в основном контролируется проверяемой страницей, и вредоносная страница может повлиять на данные, возвращаемые расширению.

Обратите внимание, что на странице может быть несколько контекстов выполнения JavaScript. У каждого фрейма есть собственный контекст, а также дополнительный контекст для каждого расширения, у которого есть скрипты контента, выполняемые в этом фрейме.

По умолчанию метод eval выполняется в контексте основного фрейма проверяемой страницы.

Метод eval принимает необязательный второй аргумент, который можно использовать для указания контекста, в котором оценивается код. Объект options может содержать один или несколько следующих ключей:

frameURL
Используйте, чтобы указать фрейм, отличный от основного фрейма проверяемой страницы.
contextSecurityOrigin
Используйте, чтобы выбрать контекст в указанном фрейме в соответствии с его источником.
useContentScriptContext
Если задано значение true, скрипт выполняется в том же контексте, что и скрипты обработки контента расширения. (Эквивалентно указанию собственного веб-источника расширения в качестве источника безопасности контекста.) Это можно использовать для обмена данными со скриптом контента.

Примеры

Следующий код проверяет версию jQuery, используемую на странице:

chrome.devtools.inspectedWindow.eval(
  "jQuery.fn.jquery",
  function(result, isException) {
    if (isException) {
      console.log("the page is not using jQuery");
    } else {
      console.log("The page is using jQuery v" + result);
    }
  }
);

Чтобы попробовать этот API, установите примеры API инструментов разработчика из хранилища chrome-extension-samples.

Типы

Resource

Ресурс на проверяемой странице, например документ, скрипт или изображение.

Свойства

  • url

    string

    URL ресурса.

  • getContent

    void

    Promise

    Получает содержимое ресурса.

    Функция getContent выглядит следующим образом:

    (callback?: function) => {...}

    • обратный вызов

      function необязательно

      Параметр callback выглядит следующим образом:

      (response: object) => void

      • Ответ

        Объект

        Chrome 151+

        Объект, содержащий контент ресурса и его кодировку.

        • контент

          string

          Контент ресурса (возможно, закодированный).

        • кодирование

          string

          Пустое, если контент не закодирован, в противном случае – название кодировки. В настоящее время поддерживается только base64.

    • Возвращает

      Promise<object>

      Chrome 151+

      Функция, которая получает контент ресурса после выполнения запроса.

      Объекты Promise поддерживаются только в Manifest V3 и более поздних версиях. На других платформах нужно использовать обратные вызовы.

  • setContent

    void

    Promise

    Задает содержимое ресурса.

    Функция setContent выглядит следующим образом:

    (content: string, commit: boolean, callback?: function) => {...}

    • контент

      string

      Новое содержимое ресурса. В настоящее время поддерживаются только ресурсы текстового типа.

    • зафиксировать изменения

      Логическое значение

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

    • обратный вызов

      function необязательно

      Параметр callback выглядит следующим образом:

      (error?: object) => void

      • ошибка

        Объект (необязательно)

        Если контент ресурса был задан успешно, возвращается значение undefined, в противном случае – описание ошибки.

    • Возвращает

      Promise<object>

      Chrome 151+

      Функция, вызываемая по завершении запроса.

      Объекты Promise поддерживаются только в Manifest V3 и более поздних версиях. На других платформах нужно использовать обратные вызовы.

Свойства

tabId

Идентификатор проверяемой вкладки. Этот идентификатор можно использовать с chrome.tabs.* .

Тип

число

Методы

eval()

Promise
chrome.devtools.inspectedWindow.eval(
  expression: string,
  options?: object,
  callback?: function,
)
: Promise<object>

Вычисляет выражение JavaScript в контексте основного фрейма проверяемой страницы. Выражение должно возвращать объект, совместимый с JSON, иначе будет выдано исключение. Функция eval может сообщать об ошибке на стороне DevTools или об исключении JavaScript, которое возникает во время оценки. В обоих случаях параметр result обратного вызова будет иметь значение undefined. Если ошибка возникла на стороне инструментов разработчика, параметр isException не равен нулю, для isError задано значение true, а для code – код ошибки. В случае ошибки JavaScript для isException задается значение True, а для value – строковое значение выброшенного объекта.

Параметры

  • выражение

    string

    Выражение, которое нужно вычислить.

  • Параметры

    Объект (необязательно)

    Параметр options может содержать один или несколько вариантов.

    • frameURL

      Строка (необязательно)

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

    • scriptExecutionContext

      Строка (необязательно)

      Chrome 107 и более поздних версий

      Вычислить выражение в контексте скрипта контента расширения, соответствующего указанному источнику. Если задано, scriptExecutionContext переопределяет значение true для useContentScriptContext.

    • useContentScriptContext

      Логическое значение (необязательно)

      Вычислить выражение в контексте скрипта контента вызывающего расширения, если скрипт контента уже внедрен в проверяемую страницу. Если нет, выражение не вычисляется и вызывается обратный вызов с параметром исключения, заданным для объекта, у которого для поля isError установлено значение true, а для поля code – E_NOTFOUND.

  • обратный вызов

    function необязательно

    Параметр callback выглядит следующим образом:

    (response: object) => void

    • Ответ

      Объект

      Chrome 151+

      Результат оценки и информация об исключении.

      • exceptionInfo

        Объект

        Объект, содержащий подробные сведения об исключении, которое возникло при вычислении выражения.

        • код

          string

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

        • описание

          string

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

        • подробные сведения

          any[]

          Задается, если ошибка произошла на стороне Инструментов разработчика до вычисления выражения. Содержит массив значений, которые можно подставить в строку описания, чтобы получить больше информации о причине ошибки.

        • isError

          Логическое значение

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

        • isException

          Логическое значение

          Устанавливается, если вычисленный код вызывает необработанное исключение.

        • value

          string

          Устанавливается, если вычисленный код вызывает необработанное исключение.

      • Результат

        Объект

        Результат оценки.

Возвраты

  • Promise<object>

    Chrome 151+

    Функция, вызываемая по завершении оценки.

    Объекты Promise поддерживаются только в Manifest V3 и более поздних версиях. На других платформах нужно использовать обратные вызовы.

getResources()

Promise
chrome.devtools.inspectedWindow.getResources(
  callback?: function,
)
: Promise<Resource[]>

Получает список ресурсов с проверенной страницы.

Параметры

  • обратный вызов

    function необязательно

    Параметр callback выглядит следующим образом:

    (resources: Resource[]) => void

    • ресурсы

      Ресурсы на странице.

Возвраты

  • Promise<Resource[]>

    Chrome 151+

    Функция, которая получает список ресурсов после выполнения запроса.

    Объекты Promise поддерживаются только в Manifest V3 и более поздних версиях. На других платформах нужно использовать обратные вызовы.

reload()

chrome.devtools.inspectedWindow.reload(
  reloadOptions?: object,
)
: void

Перезагружает проверяемую страницу.

Параметры

  • reloadOptions

    Объект (необязательно)

    • ignoreCache

      Логическое значение (необязательно)

      Если задано значение true, загрузчик будет обходить кеш для всех ресурсов проверяемой страницы, загруженных до того, как сработает событие load. Это действие аналогично нажатию клавиш Ctrl + Shift + R в окне, которое вы проверяете, или в окне инструментов разработчика.

    • injectedScript

      Строка (необязательно)

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

    • userAgent

      Строка (необязательно)

      Если указать строку, она переопределит значение HTTP-заголовка User-Agent, который отправляется при загрузке ресурсов проверяемой страницы. Строка также переопределит значение свойства navigator.userAgent, которое возвращается всем скриптам, выполняющимся на проверяемой странице.

События

onResourceAdded

chrome.devtools.inspectedWindow.onResourceAdded.addListener(
  callback: function,
)

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

Параметры

  • обратный вызов

    function

    Параметр callback выглядит следующим образом:

    (resource: Resource) => void

onResourceContentCommitted

chrome.devtools.inspectedWindow.onResourceContentCommitted.addListener(
  callback: function,
)

Срабатывает, когда фиксируется новая версия ресурса (например, пользователь сохраняет отредактированную версию ресурса в Инструментах разработчика).

Параметры

  • обратный вызов

    function

    Параметр callback выглядит следующим образом:

    (resource: Resource, content: string) => void