chrome.devtools.inspectedWindow

refresh date: 2026-09-25 robots: noindex

Opis

Użyj interfejsu API chrome.devtools.inspectedWindow, aby wejść w interakcję 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 używać tego interfejsu API, musisz zadeklarować te klucze w pliku manifestu.

"devtools_page"

Użyj chrome.devtools.inspectedWindow, aby wejść w interakcję 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 podaje identyfikator karty, którego możesz używać z wywołaniami interfejsu API chrome.tabs.*. Pamiętaj jednak, że ze względów bezpieczeństwa interfejs API chrome.tabs.* nie jest dostępny na stronach rozszerzeń narzędzi dla programistów – musisz przekazać identyfikator karty do strony działającej w tle i wywołać z niej funkcje interfejsu API chrome.tabs.*.

Do ponownego załadowania sprawdzanej strony można użyć metody reload. Dodatkowo wywołujący może określić zastąpienie ciągu klienta użytkownika, skrypt, który zostanie wstrzyknięty na początku 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 wraz ze zdarzeniem onResourceContentCommitted mogą być używane do obsługi modyfikacji zawartości zasobu, na przykład przez zewnętrzny edytor.

Wykonywanie kodu w sprawdzanym oknie

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, i niebezpieczna, gdy jest używana niewłaściwie. 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 eval nie używa odizolowanego środowiska dla ocenianego kodu, więc stan JavaScriptu w sprawdzanym oknie jest dostępny dla kodu. Użyj tej metody, gdy wymagany jest dostęp do stanu JavaScriptu sprawdzanej strony.
  • Kontekst wykonywania ocenianego kodu obejmuje interfejs API konsoli Narzędzi dla programistów. Kod może na przykład używać inspect i $0.
  • Oceniany 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 JavaScriptu i acykliczne odwołania do innych obiektów JSON). Zachowaj szczególną ostrożność podczas przetwarzania danych otrzymanych ze sprawdzanej strony – kontekst wykonywania jest zasadniczo kontrolowany przez sprawdzaną stronę. Szkodliwa strona może wpływać na dane zwracane do rozszerzenia.

Pamiętaj, że strona może zawierać wiele różnych kontekstów wykonywania kodu JavaScript. Każda ramka ma własny kontekst oraz dodatkowy kontekst dla każdego rozszerzenia, które ma skrypty treści działające w tej ramce.

Domyślnie metoda eval jest wykonywana w kontekście ramki głównej sprawdzanej strony.

Metoda eval przyjmuje opcjonalny drugi argument, którego możesz użyć do określenia kontekstu, w którym kod jest oceniany. Ten obiekt options może zawierać co najmniej 1 z tych kluczy:

frameURL
Służy do określania ramki innej niż ramka główna sprawdzanej strony.
contextSecurityOrigin
Służy do wybierania kontekstu w określonej ramce zgodnie z jej origin strony.
useContentScriptContext
Jeśli ma wartość Prawda, skrypt jest wykonywany w tym samym kontekście co skrypty treści rozszerzenia. (Odpowiada to określeniu własnego źródła internetowego rozszerzenia jako źródła zabezpieczeń kontekstu). Można go używać do wymiany danych ze skryptem treści.

Przykłady

Poniższy kod sprawdza wersję jQuery używaną przez sprawdzaną stronę:

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

    unieważnienie,

    Obietnica

    Pobiera zawartość zasobu.

    Funkcja getContent wygląda tak:

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

    • callback

      function opcjonalne

      Parametr callback wygląda tak:

      (response: object) => void

      • odpowiedź

        obiekt

        Chrome 151 lub nowsza wersja

        Obiekt zawierający treść zasobu i jego kodowanie.

        • treść

          tekst

          Treść zasobu (potencjalnie zakodowana).

        • kodowanie

          tekst

          Jeśli treść nie jest zakodowana, pole jest puste. W przeciwnym razie zawiera nazwę kodowania. Obecnie obsługiwany jest tylko format base64.

    • returns

      Promise<object>

      Chrome 151 lub nowsza wersja

      Funkcja, która otrzymuje zawartość zasobu po zakończeniu żądania.

      Obiekty Promise są obsługiwane tylko w przypadku platformy Manifest V3 i nowszych. Na innych platformach należy używać wywołań zwrotnych.

  • setContent

    unieważnienie,

    Obietnica

    Ustawia zawartość zasobu.

    Funkcja setContent wyglą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

      function opcjonalne

      Parametr callback wygląda tak:

      (error?: object) => void

      • błąd

        object opcjonalny

        Jeśli zawartość zasobu została ustawiona prawidłowo, wartość jest niezdefiniowana. W przeciwnym razie opisuje błąd.

    • returns

      Promise<object>

      Chrome 151 lub nowsza wersja

      Funkcja wywoływana po zakończeniu żądania.

      Obiekty Promise są obsługiwane tylko w przypadku platformy Manifest V3 i nowszych. Na innych platformach należy 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()

Obietnica
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 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 to undefined. W przypadku błędu po stronie Narzędzi deweloperskich parametr isException nie ma wartości null, a parametr isError ma wartość true, natomiast parametr code ma wartość kodu błędu. W przypadku błędu JavaScriptu zmienna isException ma wartość „true”, a zmienna value ma wartość ciągu znaków zgłoszonego obiektu.

Parametry

  • wyrażenie

    tekst

    Wyrażenie do oceny.

  • Opcje

    object opcjonalny

    Parametr options może zawierać co najmniej 1 opcję.

    • frameURL

      ciąg znaków opcjonalny

      Jeśli jest określone, wyrażenie jest oceniane w elemencie iframe, którego adres URL pasuje do podanego. Domyślnie wyrażenie jest oceniane w górnej ramce sprawdzanej strony.

    • scriptExecutionContext

      ciąg znaków opcjonalny

      Chrome 107 lub nowsza wersja

      Oceń wyrażenie w kontekście skryptu treści rozszerzenia, które pasuje do określonego źródła. Jeśli podasz parametr scriptExecutionContext, zastąpi on ustawienie „true” (prawda) parametru useContentScriptContext.

    • useContentScriptContext

      boolean opcjonalne

      Oceń wyrażenie w kontekście skryptu treści wywołującego rozszerzenia, pod warunkiem że skrypt treści został już wstrzyknięty na sprawdzaną stronę. Jeśli nie, wyrażenie nie jest oceniane, a wywołanie zwrotne jest wywoływane z parametrem wyjątku ustawionym na obiekt, który ma pole isError ustawione na wartość true, a pole code ustawione na wartość E_NOTFOUND.

  • callback

    function opcjonalne

    Parametr callback wygląda tak:

    (response: object) => void

    • odpowiedź

      obiekt

      Chrome 151 lub nowsza wersja

      Wynik oceny i informacje o wyjątkach.

      • exceptionInfo

        obiekt

        Obiekt zawierający szczegółowe informacje, jeśli podczas oceny wyrażenia wystąpił wyjątek.

        • kod

          tekst

          Ustaw, jeśli błąd wystąpił po stronie Narzędzi deweloperskich przed oceną wyrażenia.

        • opis

          tekst

          Ustaw, jeśli błąd wystąpił po stronie Narzędzi deweloperskich przed oceną wyrażenia.

        • szczegóły

          any[]

          Ustaw, jeśli błąd wystąpił po stronie Narzędzi deweloperskich przed oceną wyrażenia. Zawiera tablicę wartości, które można zastąpić w ciągu opisu, aby podać więcej informacji o przyczynie błędu.

        • isError

          wartość logiczna

          Ustaw, jeśli błąd wystąpił po stronie Narzędzi deweloperskich przed oceną wyrażenia.

        • isException

          wartość logiczna

          Ustaw, jeśli oceniany kod generuje nieobsługiwany wyjątek.

        • wartość

          tekst

          Ustaw, jeśli oceniany kod generuje nieobsługiwany wyjątek.

      • wynik

        obiekt

        Wynik oceny.

Zwroty

  • Promise<object>

    Chrome 151 lub nowsza wersja

    Funkcja wywoływana po zakończeniu oceny.

    Obiekty Promise są obsługiwane tylko w przypadku platformy Manifest V3 i nowszych. Na innych platformach należy używać wywołań zwrotnych.

getResources()

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

Pobiera listę zasobów ze sprawdzonej strony.

Parametry

  • callback

    function opcjonalne

    Parametr callback wygląda tak:

    (resources: Resource[]) => void

Zwroty

  • Promise<Resource[]>

    Chrome 151 lub nowsza wersja

    Funkcja, która otrzymuje listę zasobów po zakończeniu żądania.

    Obiekty Promise są obsługiwane tylko w przypadku platformy Manifest V3 i nowszych. Na innych platformach należy używać wywołań zwrotnych.

reload()

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

Ponownie wczytuje sprawdzaną stronę.

Parametry

  • reloadOptions

    object opcjonalny

    • ignoreCache

      boolean opcjonalne

      Jeśli ma wartość „true”, moduł ładujący będzie pomijać pamięć podręczną w przypadku wszystkich sprawdzonych zasobów strony wczytanych przed wywołaniem zdarzenia load. Efekt jest podobny do naciśnięcia Ctrl + Shift + R w sprawdzanym oknie lub w oknie Narzędzi dla programistów.

    • injectedScript

      ciąg znaków opcjonalny

      Jeśli podasz skrypt, zostanie on wstrzyknięty do każdej ramki sprawdzanej strony natychmiast po jej załadowaniu, przed wszystkimi skryptami ramki. Skrypt nie zostanie wstrzyknięty po kolejnych przeładowaniach – na przykład jeśli użytkownik naciśnie Ctrl+R.

    • userAgent

      ciąg znaków opcjonalny

      Jeśli podasz ciąg znaków, zastąpi on wartość nagłówka HTTP User-Agent wysyłanego podczas wczytywania zasobów sprawdzanej strony. Ciąg znaków zastąpi też wartość właściwości navigator.userAgent zwracaną do skryptów uruchomionych na sprawdzanej stronie.

Wydarzenia

onResourceAdded

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

Uruchamiane, gdy do sprawdzanej strony zostanie dodany nowy zasób.

Parametry

  • callback

    funkcja

    Parametr callback wygląda tak:

    (resource: Resource) => void

onResourceContentCommitted

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

Uruchamiane, gdy zostanie zatwierdzona nowa wersja zasobu (np. użytkownik zapisze edytowaną wersję zasobu w Narzędziach dla programistów).

Parametry

  • callback

    funkcja

    Parametr callback wygląda tak:

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