refresh date: 2026-09-25 robots: noindex
Описание
Используйте chrome.devtools.inspectedWindow API для взаимодействия с проверяемым окном: получите идентификатор вкладки для проверяемой страницы, оцените код в контексте проверяемого окна, перезагрузите страницу или получите список ресурсов на странице.
Манифест
Используйте 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()
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()
chrome.devtools.inspectedWindow.getResources(
callback?: function,
): Promise<Resource[]>
Получает список ресурсов с проверенной страницы.
Параметры
Возвраты
-
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,
)
Срабатывает, когда фиксируется новая версия ресурса (например, пользователь сохраняет отредактированную версию ресурса в Инструментах разработчика).