refresh date: 2026-09-25 robots: noindex
Opis
Użyj interfejsu chrome.devtools.inspectedWindow API, aby wchodzić w interakcje ze sprawdzanym oknem: uzyskać identyfikator karty sprawdzanej strony, ocenić kod w kontekście sprawdzanego okna, ponownie załadować stronę lub uzyskać listę zasobów na stronie.
Plik manifestu
Aby korzystać z tego interfejsu API, musisz zadeklarować w pliku manifestu te klucze:
"devtools_page"Użyj chrome.devtools.inspectedWindow, aby wchodzić w interakcje ze sprawdzanym oknem: uzyskać identyfikator karty sprawdzanej strony, ocenić kod w kontekście sprawdzanego okna, ponownie załadować stronę lub uzyskać listę zasobów na stronie.
Ogólne wprowadzenie do korzystania z interfejsów API Narzędzi deweloperskich znajdziesz w podsumowaniu interfejsów API Narzędzi deweloperskich.
Przegląd
Właściwość tabId zawiera identyfikator karty, którego możesz używać w wywołaniach interfejsu API chrome.tabs.*. Pamiętaj jednak, że ze względów bezpieczeństwa interfejs chrome.tabs.* API nie jest udostępniany stronom rozszerzenia Narzędzia deweloperskie. Musisz przekazać identyfikator karty do strony w tle i wywołać z niej funkcje interfejsu chrome.tabs.* API.
Do ponownego załadowania sprawdzanej strony można użyć metody reload. Dodatkowo osoba wywołująca może określić zastąpienie ciągu agenta użytkownika, skryptu, który zostanie wstrzyknięty na wczesnym etapie wczytywania strony, lub opcję wymuszenia ponownego wczytania zasobów z pamięci podręcznej.
Użyj wywołania getResources i zdarzenia onResourceContent, aby uzyskać listę zasobów (dokumentów, arkuszy stylów, skryptów, obrazów itp.) na sprawdzanej stronie. Metody getContent i setContent klasy Resource oraz zdarzenie onResourceContentCommitted mogą być używane do obsługi modyfikacji treści zasobu, np. przez edytor zewnętrzny.
Wykonywanie kodu w oknie inspekcji
Metoda eval umożliwia rozszerzeniom wykonywanie kodu JavaScript w kontekście sprawdzanej strony. Ta metoda jest skuteczna, gdy jest używana we właściwym kontekście, a niebezpieczna, gdy jest stosowana nieodpowiednio. Używaj metody tabs.executeScript, chyba że potrzebujesz konkretnej funkcji, którą zapewnia metoda eval.
Oto główne różnice między metodami eval i tabs.executeScript:
- Metoda
evalnie używa odizolowanego środowiska dla ocenianego kodu, więc kod ma dostęp do stanu JavaScriptu w sprawdzanym oknie. Użyj tej metody, gdy potrzebujesz dostępu do stanu JavaScript sprawdzanej strony. - Kontekst wykonania ocenianego kodu obejmuje interfejs API konsoli Narzędzi deweloperskich.
Na przykład kod może używać wartości
inspecti$0. - Oceniony kod może zwrócić wartość, która jest przekazywana do wywołania zwrotnego rozszerzenia. Zwracana wartość musi być prawidłowym obiektem JSON (może zawierać tylko podstawowe typy JavaScript i acykliczne odwołania do innych obiektów JSON). Podczas przetwarzania otrzymanych danych zachowaj szczególną ostrożność. Kontekst wykonania jest w zasadzie kontrolowany przez sprawdzaną stronę. Złośliwa strona może wpływać na dane zwracane do rozszerzenia.
Pamiętaj, że strona może zawierać wiele różnych kontekstów wykonania JavaScriptu. Każda ramka ma własny kontekst, a także dodatkowy kontekst dla każdego rozszerzenia, które ma w niej uruchomione skrypty treści.
Domyślnie metoda eval jest wykonywana w kontekście ramki głównej sprawdzanej strony.
Metoda eval przyjmuje opcjonalny drugi argument, który umożliwia określenie kontekstu, w którym kod jest oceniany. Obiekt options może zawierać co najmniej 1 z tych kluczy:
frameURL- Użyj, aby określić ramkę inną niż ramka główna sprawdzanej strony.
contextSecurityOrigin- Użyj, aby wybrać kontekst w określonej ramce zgodnie z jej origin strony.
useContentScriptContext- Jeśli ma wartość „true”, skrypt jest wykonywany w tym samym kontekście co skrypty treści rozszerzeń. (Odpowiednik określenia własnego źródła internetowego rozszerzenia jako źródła bezpieczeństwa kontekstu). Można go używać do wymiany danych ze skryptem treści.
Przykłady
Poniższy kod sprawdza wersję jQuery używaną na sprawdzanej stronie:
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);
}
}
);
Aby wypróbować ten interfejs API, zainstaluj przykłady interfejsu API narzędzi deweloperskich z repozytorium chrome-extension-samples.
Typy
Resource
Zasób na sprawdzanej stronie, np. dokument, skrypt lub obraz.
Właściwości
-
URL
tekst
Adres URL zasobu.
-
getContent
pusty
ObietnicaPobiera zawartość zasobu.
Funkcja
getContentwygląda tak:(callback?: function) => {...}
-
callback
funkcja opcjonalna
Parametr
callbackwygląda tak:(response: object) => void
-
odpowiedź
obiekt
Chrome 151 lub nowszaObiekt zawierający treść zasobu i jej kodowanie.
-
treść
tekst
Treść zasobu (potencjalnie zakodowana).
-
kodowanie,
tekst
Puste, jeśli treść nie jest zakodowana, w przeciwnym razie nazwa kodowania. Obecnie obsługiwany jest tylko format base64.
-
-
-
returns
Promise<object>
Chrome 151 lub nowszaFunkcja, która otrzymuje treść zasobu po zakończeniu żądania.
Obietnice są obsługiwane tylko w przypadku platformy Manifest V3 i nowszych. Inne platformy muszą używać wywołań zwrotnych.
-
-
setContent
pusty
ObietnicaUstawia zawartość zasobu.
Funkcja
setContentwygląda tak:(content: string, commit: boolean, callback?: function) => {...}
-
treść
tekst
Nowa treść zasobu. Obecnie obsługiwane są tylko zasoby typu tekstowego.
-
zatwierdź
wartość logiczna
Wartość „true”, jeśli użytkownik zakończył edytowanie zasobu i nowa treść zasobu powinna zostać zachowana; wartość „false”, jeśli jest to niewielka zmiana wysłana w trakcie edytowania zasobu przez użytkownika.
-
callback
funkcja opcjonalna
Parametr
callbackwygląda tak:(error?: object) => void
-
błąd
obiekt opcjonalny
Ustaw na wartość undefined, jeśli zawartość zasobu została ustawiona prawidłowo. W przeciwnym razie opisuje błąd.
-
-
returns
Promise<object>
Chrome 151 lub nowszaFunkcja wywoływana po zakończeniu żądania.
Obietnice są obsługiwane tylko w przypadku platformy Manifest V3 i nowszych. Inne platformy muszą używać wywołań zwrotnych.
-
Właściwości
tabId
Identyfikator sprawdzanej karty. Ten identyfikator może być używany z chrome.tabs.* a także przy użyciu Google Cloud CLI lub Compute Engine API.
Typ
liczba
Metody
eval()
chrome.devtools.inspectedWindow.eval(
expression: string,
options?: object,
callback?: function,
): Promise<object>
Ocenia wyrażenie JavaScript w kontekście ramki głównej sprawdzanej strony. Wyrażenie musi zwracać obiekt zgodny z formatem JSON, w przeciwnym razie zostanie zgłoszony wyjątek. Funkcja eval może zgłosić błąd po stronie Narzędzi deweloperskich lub wyjątek JavaScriptu, który wystąpi podczas oceny. W obu przypadkach parametr result wywołania zwrotnego ma wartość undefined. W przypadku błędu po stronie Narzędzi deweloperskich parametr isException nie ma wartości null, a parametr isError ma wartość true, a parametr code ma wartość kodu błędu. W przypadku błędu JavaScript zmienna isException przyjmuje wartość „true”, a zmienna value przyjmuje wartość ciągu wyrzuconego obiektu.
Parametry
-
wyrażenie
tekst
Wyrażenie do oceny.
-
Opcje
obiekt opcjonalny
Parametr options może zawierać co najmniej 1 opcję.
-
frameURL
ciąg znaków opcjonalny
Jeśli jest określone, wyrażenie jest obliczane w ramce iframe, której adres URL pasuje do podanego adresu. Domyślnie wyrażenie jest obliczane w górnej ramce sprawdzanej strony.
-
scriptExecutionContext
ciąg znaków opcjonalny
Chrome 107 lub nowszaOcenia wyrażenie w kontekście skryptu treści rozszerzenia, które pasuje do określonego pochodzenia. Jeśli podano wartość, scriptExecutionContext zastępuje ustawienie „true” w przypadku parametru useContentScriptContext.
-
useContentScriptContext
wartość logiczna opcjonalna
Ocenia wyrażenie w kontekście skryptu treści rozszerzenia wywołującego, pod warunkiem że skrypt treści jest już wstrzyknięty do sprawdzanej strony. W przeciwnym razie wyrażenie nie jest obliczane, a wywołanie zwrotne jest wywoływane z parametrem wyjątku ustawionym na obiekt, w którym pole
isErrorma wartość true, a polecodema wartośćE_NOTFOUND.
-
-
callback
funkcja opcjonalna
Parametr
callbackwygląda tak:(response: object) => void
-
odpowiedź
obiekt
Chrome 151 lub nowszaWynik oceny i informacje o wyjątkach.
-
exceptionInfo
obiekt
Obiekt zawierający szczegóły, jeśli podczas obliczania wyrażenia wystąpił wyjątek.
-
kod
tekst
Określa, czy błąd wystąpił po stronie Narzędzi deweloperskich przed obliczeniem wyrażenia.
-
opis
tekst
Określa, czy błąd wystąpił po stronie Narzędzi deweloperskich przed obliczeniem wyrażenia.
-
szczegóły
any[]
Określa, czy błąd wystąpił po stronie Narzędzi deweloperskich przed obliczeniem wyrażenia. Zawiera tablicę wartości, które można wstawić do ciągu opisu, aby podać więcej informacji o przyczynie błędu.
-
isError
wartość logiczna
Określa, czy błąd wystąpił po stronie Narzędzi deweloperskich przed obliczeniem wyrażenia.
-
isException
wartość logiczna
Określa, czy oceniany kod generuje nieobsłużony wyjątek.
-
wartość
tekst
Określa, czy oceniany kod generuje nieobsłużony wyjątek.
-
-
wynik
obiekt
Wynik oceny.
-
-
Zwroty
-
Promise<object>
Chrome 151 lub nowszaFunkcja wywoływana po zakończeniu oceny.
Obietnice są obsługiwane tylko w przypadku platformy Manifest V3 i nowszych. Inne platformy muszą używać wywołań zwrotnych.
getResources()
chrome.devtools.inspectedWindow.getResources(
callback?: function,
): Promise<Resource[]>
Pobiera listę zasobów ze sprawdzanej strony.
Parametry
Zwroty
-
Promise<Resource[]>
Chrome 151 lub nowszaFunkcja, która otrzymuje listę zasobów po zakończeniu żądania.
Obietnice są obsługiwane tylko w przypadku platformy Manifest V3 i nowszych. Inne platformy muszą używać wywołań zwrotnych.
reload()
chrome.devtools.inspectedWindow.reload(
reloadOptions?: object,
): void
Ponownie wczytuje sprawdzaną stronę.
Parametry
-
reloadOptions
obiekt opcjonalny
-
ignoreCache
wartość logiczna opcjonalna
Jeśli ma wartość true, moduł wczytujący pominie pamięć podręczną w przypadku wszystkich zasobów sprawdzanej strony wczytanych przed wywołaniem zdarzenia
load. Działa to podobnie jak naciśnięcie klawiszy Ctrl+Shift+R w sprawdzanym oknie lub w oknie Narzędzi deweloperskich. -
injectedScript
ciąg znaków opcjonalny
Jeśli to określisz, skrypt zostanie wstrzyknięty do każdej ramki sprawdzanej strony natychmiast po jej wczytaniu, przed wszystkimi skryptami ramki. Skrypt nie zostanie wstrzyknięty po kolejnych przeładowaniach, np. gdy użytkownik naciśnie Ctrl+R.
-
userAgent
ciąg znaków opcjonalny
Jeśli ten ciąg znaków zostanie określony, zastąpi wartość nagłówka HTTP
User-Agentwysyłanego podczas wczytywania zasobów sprawdzanej strony. Ciąg znaków zastąpi też wartość właściwościnavigator.userAgent, która jest zwracana do wszystkich skryptów działających na sprawdzanej stronie.
-
Wydarzenia
onResourceAdded
chrome.devtools.inspectedWindow.onResourceAdded.addListener(
callback: function,
)
Wywoływane, gdy do sprawdzanej strony zostanie dodany nowy zasób.
onResourceContentCommitted
chrome.devtools.inspectedWindow.onResourceContentCommitted.addListener(
callback: function,
)
Wywoływane, gdy zostanie zatwierdzona nowa wersja zasobu (np. użytkownik zapisze edytowaną wersję zasobu w Narzędziach deweloperskich).