chrome.debugger

Opis

Interfejs chrome.debugger API służy jako alternatywny transport dla protokołu zdalnego debugowania w Chrome. Użyj chrome.debugger, aby dołączyć do jednej lub kilku kart i instrumentować interakcje sieciowe, debugować JavaScript, modyfikować DOM i CSS oraz wykonywać inne czynności. Użyj właściwości Debuggee tabId, aby kierować zdarzenia na karty z wartością sendCommand i kierować zdarzenia według wartości tabId z wywołań zwrotnych onEvent.

Uprawnienia

debugger

Uwaga dotycząca bezpieczeństwa

Ze względów bezpieczeństwa interfejs chrome.debugger API nie zapewnia dostępu do wszystkich domen protokołu Narzędzi deweloperskich w Chrome. Dostępne domeny to: Accessibility, Audits, CacheStorage, Console, CSS, Database, Debugger, DOM, DOMDebugger, DOMSnapshot, Emulation, Fetch, IO, Input, Inspector, Log, Network, Overlay, Page, Performance, Profiler, Runtime, Storage, Target, Tracing, WebAudio i WebAuthn.

Plik manifestu

Aby korzystać z tego interfejsu API, musisz zadeklarować uprawnienie "debugger"` w pliku manifestu rozszerzenia.

{
  "name": "My extension",
  ...
  "permissions": [
    "debugger",
  ],
  ...
}

Przykłady

Aby wypróbować ten interfejs API, zainstaluj przykład interfejsu API debugera z repozytorium chrome-extension-samples.

Typy

Debuggee

Identyfikator debugowanego obiektu. Należy określić tabId, extensionId lub targetId

Właściwości

  • extensionId

    ciąg znaków opcjonalny

    Identyfikator rozszerzenia, które chcesz debugować. Dołączanie do strony tła rozszerzenia jest możliwe tylko wtedy, gdy używany jest przełącznik wiersza poleceń --silent-debugger-extension-api.

  • tabId

    number opcjonalny

    Identyfikator karty, którą chcesz debugować.

  • targetId

    ciąg znaków opcjonalny

    Nieprzezroczysty identyfikator debugowanego celu.

DebuggerSession

Chrome 125 lub nowsza

Identyfikator sesji debugera. Musisz określić jeden z tych identyfikatorów: tabId, extensionId lub targetId. Dodatkowo można podać opcjonalny identyfikator sesji. Jeśli w przypadku argumentów wysyłanych z onEvent określono sessionId, oznacza to, że zdarzenie pochodzi z sesji protokołu podrzędnego w ramach sesji głównej debugowanego procesu. Jeśli identyfikator sessionId jest określony podczas przekazywania do funkcji sendCommand, jest on kierowany do sesji protokołu podrzędnego w ramach sesji debugowania głównego.

Właściwości

  • extensionId

    ciąg znaków opcjonalny

    Identyfikator rozszerzenia, które chcesz debugować. Dołączanie do strony tła rozszerzenia jest możliwe tylko wtedy, gdy używany jest przełącznik wiersza poleceń --silent-debugger-extension-api.

  • sessionId

    ciąg znaków opcjonalny

    Nieprzejrzysty identyfikator sesji protokołu narzędzi deweloperskich w Chrome. Wskazuje sesję podrzędną w sesji głównej zidentyfikowanej przez tabId, extensionId lub targetId.

  • tabId

    number opcjonalny

    Identyfikator karty, którą chcesz debugować.

  • targetId

    ciąg znaków opcjonalny

    Nieprzezroczysty identyfikator debugowanego celu.

DetachReason

Chrome 44 lub nowszy

Przyczyna zakończenia połączenia.

Typ wyliczeniowy

„target_closed”

„canceled_by_user”

TargetInfo

Informacje o obiekcie debugowania

Właściwości

  • podłączony

    Wartość logiczna

    Wartość Prawda, jeśli debuger jest już dołączony.

  • extensionId

    ciąg znaków opcjonalny

    Identyfikator rozszerzenia, zdefiniowany, jeśli typ = „background_page”.

  • faviconUrl

    ciąg znaków opcjonalny

    Docelowy adres URL favikony.

  • id

    ciąg znaków

    Identyfikator miejsca docelowego.

  • tabId

    number opcjonalny

    Identyfikator karty, zdefiniowany, jeśli typ == „page”.

  • tytuł

    ciąg znaków

    Tytuł strony docelowej.

  • Typ celu.

  • URL

    ciąg znaków

    Docelowy URL.

TargetInfoType

Chrome 44 lub nowszy

Typ celu.

Typ wyliczeniowy

„page”

"background_page"

„worker”

„other”

Metody

attach()

Obietnica
chrome.debugger.attach(
  target: Debuggee,
  requiredVersion: string,
  callback?: function,
)
: Promise<void>

Dołącza debuger do danego elementu docelowego.

Parametry

  • Cel debugowania, do którego chcesz dołączyć.

  • requiredVersion

    ciąg znaków

    Wymagana wersja protokołu debugowania („0.1”). Do debugowanego programu można dołączyć tylko debuger o pasującej wersji głównej i wersji podrzędnej równej lub nowszej. Listę wersji protokołu znajdziesz tutaj.

  • callback

    funkcja opcjonalna

    Parametr callback wygląda tak:

    () => void

Zwroty

  • Promise<void>

    Chrome 96 lub nowsza wersja

    Zwraca obietnicę po zakończeniu operacji dołączania (powodzeniem lub niepowodzeniem). Obietnica zostaje spełniona bez wartości. Jeśli dołączenie się nie powiedzie, obietnica zostanie odrzucona.

    Obietnice są obsługiwane tylko w przypadku platformy Manifest V3 i nowszych. Inne platformy muszą używać wywołań zwrotnych.

detach()

Obietnica
chrome.debugger.detach(
  target: Debuggee,
  callback?: function,
)
: Promise<void>

Odłącza debuger od danego miejsca docelowego.

Parametry

  • Obiekt docelowy debugowania, od którego chcesz się odłączyć.

  • callback

    funkcja opcjonalna

    Parametr callback wygląda tak:

    () => void

Zwroty

  • Promise<void>

    Chrome 96 lub nowsza wersja

    Zwraca obietnicę po zakończeniu operacji odłączania (powodzeniem lub niepowodzeniem). Obietnica zostaje spełniona bez wartości. Jeśli odłączenie się nie powiedzie, obietnica zostanie odrzucona.

    Obietnice są obsługiwane tylko w przypadku platformy Manifest V3 i nowszych. Inne platformy muszą używać wywołań zwrotnych.

getTargets()

Obietnica
chrome.debugger.getTargets(
  callback?: function,
)
: Promise<TargetInfo[]>

Zwraca listę dostępnych celów debugowania.

Parametry

  • callback

    funkcja opcjonalna

    Parametr callback wygląda tak:

    (result: TargetInfo[]) => void

    • wynik

      Tablica obiektów TargetInfo odpowiadających dostępnym celom debugowania.

Zwroty

  • Promise<TargetInfo[]>

    Chrome 96 lub nowsza wersja

    Obietnice są obsługiwane tylko w przypadku platformy Manifest V3 i nowszych. Inne platformy muszą używać wywołań zwrotnych.

sendCommand()

Obietnica
chrome.debugger.sendCommand(
  target: DebuggerSession,
  method: string,
  commandParams?: object,
  callback?: function,
)
: Promise<object | undefined>

Wysyła podane polecenie do celu debugowania.

Parametry

  • Cel debugowania, do którego chcesz wysłać polecenie.

  • method

    ciąg znaków

    Nazwa metody. Powinna to być jedna z metod zdefiniowanych przez protokół zdalnego debugowania.

  • commandParams

    obiekt opcjonalny

    Obiekt JSON z parametrami żądania. Ten obiekt musi być zgodny ze schematem parametrów debugowania zdalnego dla danej metody.

  • callback

    funkcja opcjonalna

    Parametr callback wygląda tak:

    (result?: object) => void

    • wynik

      obiekt opcjonalny

      Obiekt JSON z odpowiedzią. Struktura odpowiedzi różni się w zależności od nazwy metody i jest określona przez atrybut „returns” w opisie polecenia w protokole zdalnego debugowania.

Zwroty

  • Promise<object | undefined>

    Chrome 96 lub nowsza wersja

    Treść odpowiedzi. Jeśli podczas publikowania wiadomości wystąpi błąd, obietnica zostanie odrzucona.

    Obietnice są obsługiwane tylko w przypadku platformy Manifest V3 i nowszych. Inne platformy muszą używać wywołań zwrotnych.

Wydarzenia

onDetach

chrome.debugger.onDetach.addListener(
  callback: function,
)

Uruchamiane, gdy przeglądarka zakończy sesję debugowania karty. Dzieje się tak, gdy zamykana jest karta lub gdy w przypadku dołączonej karty wywoływane są Narzędzia deweloperskie w Chrome.

Parametry

onEvent

chrome.debugger.onEvent.addListener(
  callback: function,
)

Uruchamiane za każdym razem, gdy wystąpi zdarzenie instrumentacji związane z problemami z elementem docelowym debugowania.

Parametry

  • callback

    funkcja

    Parametr callback wygląda tak:

    (source: DebuggerSession, method: string, params?: object) => void

    • źródło
    • method

      ciąg znaków

    • parametry

      obiekt opcjonalny