chrome.devtools.inspectedWindow

Descrizione

Utilizza l'API chrome.devtools.inspectedWindow per interagire con la finestra ispezionata: ottieni l'ID scheda della pagina ispezionata, valuta il codice nel contesto della finestra ispezionata, ricarica la pagina o recupera l'elenco delle risorse al suo interno.

Manifest

Per utilizzare questa API, le seguenti chiavi devono essere dichiarate nel manifest.

"devtools_page"

Utilizza chrome.devtools.inspectedWindow per interagire con la finestra ispezionata: ottieni l'ID scheda per pagina ispezionata, valuta il codice nel contesto della finestra ispezionata, ricarica la pagina oppure ottieni l'elenco delle risorse all'interno della pagina.

Consulta il riepilogo delle API di DevTools per un'introduzione generale all'utilizzo delle API degli strumenti per sviluppatori.

Panoramica

La proprietà tabId fornisce l'identificatore di scheda che puoi utilizzare con chrome.tabs.* Chiamate API. Tuttavia, tieni presente che l'API chrome.tabs.* non è esposta agli Strumenti per sviluppatori le pagine delle estensioni per motivi di sicurezza: dovrai trasferire l'ID scheda allo sfondo e richiamare le funzioni API chrome.tabs.* da lì.

È possibile utilizzare il metodo reload per ricaricare la pagina ispezionata. Inoltre, il chiamante può specificare un override per la stringa dello user agent, uno script che verrà inserito in anticipo al momento del caricamento della pagina o un per forzare il ricaricamento delle risorse memorizzate nella cache.

Utilizza la chiamata getResources e l'evento onResourceContent per ottenere l'elenco delle risorse (documenti, fogli di stile, script, immagini e così via) all'interno della pagina ispezionata. Le getContent e setContent metodi della classe Resource insieme all'evento onResourceContentCommitted possono essere utilizzate per supportare la modifica dei contenuti della risorsa, ad esempio da un editor esterno.

Esecuzione di codice nella finestra ispezionata

Il metodo eval consente alle estensioni di eseguire il codice JavaScript nel contesto di: la pagina ispezionata. Questo metodo è efficace se usato nel contesto giusto e pericoloso se usato in modo inappropriato. Utilizza il metodo tabs.executeScript, a meno che tu non abbia bisogno della funzionalità specifica fornito dal metodo eval.

Ecco le principali differenze tra i metodi eval e tabs.executeScript:

  • Il metodo eval non utilizza un mondo isolato per il codice che viene valutato, pertanto il codice JavaScript della finestra ispezionata sia accessibile al codice. Utilizza questo metodo quando accedi ai Lo stato JavaScript della pagina ispezionata è obbligatorio.
  • Il contesto di esecuzione del codice che viene valutato include l'API della console Strumenti per sviluppatori. Ad esempio, il codice può utilizzare inspect e $0.
  • Il codice valutato può restituire un valore che viene passato al callback dell'estensione. Il valore restituito deve essere un oggetto JSON valido (può contenere solo tipi JavaScript primitivi e riferimenti ad altri oggetti JSON). Presta particolare attenzione durante il trattamento dei dati ricevuti dalla pagina ispezionata: il contesto di esecuzione è essenzialmente controllato dalla pagina ispezionata; un una pagina dannosa potrebbe incidere sui dati restituiti all'estensione.
di Gemini Advanced.

Tieni presente che una pagina può includere diversi contesti di esecuzione JavaScript. Ogni frame ha il suo contesto specifico, più un contesto aggiuntivo per ogni estensione con script di contenuti in esecuzione al suo interno. frame.

Per impostazione predefinita, il metodo eval viene eseguito nel contesto del frame principale della pagina ispezionata.

Il metodo eval prende un secondo argomento facoltativo che puoi utilizzare per specificare il contesto in cui viene valutato il codice. Questo oggetto options può contenere una o più delle seguenti chiavi:

frameURL
Utilizza questa opzione per specificare un frame diverso dal frame principale della pagina ispezionata.
contextSecurityOrigin
Usa questa opzione per selezionare un contesto all'interno del frame specificato in base alla sua origine web.
useContentScriptContext
Se il valore è true, esegui lo script nello stesso contesto degli script dei contenuti delle estensioni. (Equivalente a specificando l'organizzazione web delle estensioni come origine della sicurezza del contesto). Può essere utilizzato per scambiano dati con lo script dei contenuti.

Esempi

Il seguente codice verifica la versione di jQuery utilizzata dalla pagina ispezionata:

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);
    }
  }
);

Per provare questa API, installa gli esempi di API DevTools da chrome-extension-samples repository Git.

Tipi

Resource

Una risorsa all'interno della pagina ispezionata, ad esempio un documento, uno script o un'immagine.

Proprietà

  • url

    stringa

    L'URL della risorsa.

  • getContent

    null

    Recupera il contenuto della risorsa.

    La funzione getContent ha questo aspetto:

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

    • callback

      funzione

      Il parametro callback ha il seguente aspetto:

      (content: string, encoding: string) => void

      • contenuti

        stringa

        Contenuto della risorsa (potenzialmente codificata).

      • codifica

        stringa

        Vuoto se i contenuti non sono codificati, altrimenti il nome codifica. Al momento è supportato solo il formato base64.

  • setContent

    null

    Imposta il contenuto della risorsa.

    La funzione setContent ha questo aspetto:

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

    • contenuti

      stringa

      Nuovi contenuti della risorsa. Al momento sono supportate solo le risorse con il tipo di testo.

    • commit

      booleano

      True se l'utente ha terminato di modificare la risorsa e i nuovi contenuti della risorsa devono essere resi persistenti; false se si tratta di una modifica di piccola entità inviata in corso di modifica della risorsa da parte dell'utente.

    • callback

      funzione facoltativa

      Il parametro callback ha il seguente aspetto:

      (error?: object) => void

      • errore

        oggetto facoltativo

        Impostato su non definito se il contenuto della risorsa è stato impostato correttamente. descrive l'errore in altro modo.

Proprietà

tabId

L'ID della scheda che viene ispezionata. Questo ID può essere utilizzato con chrome.tabs.* tramite Google Cloud CLI o tramite l'API Compute Engine.

Tipo

numero

Metodi

eval()

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

Valuta un'espressione JavaScript nel contesto del frame principale della pagina ispezionata. L'espressione deve restituire un oggetto compatibile con JSON, altrimenti viene generata un'eccezione. La funzione di valutazione può segnalare un errore lato DevTools o un'eccezione JavaScript che si verifica durante la valutazione. In entrambi i casi, il parametro result del callback è undefined. In caso di errore lato DevTools, il parametro isException non è nullo e il valore isError è impostato su true e code su un codice di errore. Nel caso di un errore JavaScript, isException viene impostato su true e value viene impostato sul valore di stringa dell'oggetto restituito.

Parametri

  • espressione

    stringa

    Un'espressione da valutare.

  • opzioni

    oggetto facoltativo

    Il parametro options può contenere una o più opzioni.

    • frameURL

      stringa facoltativo

      Se specificata, l'espressione viene valutata nell'iframe il cui URL corrisponde a quello specificato. Per impostazione predefinita, l'espressione viene valutata nel frame superiore della pagina ispezionata.

    • scriptExecutionContext

      stringa facoltativo

      Chrome 107 e versioni successive .

      Valuta l'espressione nel contesto di uno script di contenuti di un'estensione che corrisponde all'origine specificata. Se specificato, scriptExecutionContext sostituisce il valore "true" su useContentScriptContext.

    • useContentScriptContext

      booleano facoltativo

      Valuta l'espressione nel contesto dello script dei contenuti dell'estensione chiamante, a condizione che lo script dei contenuti sia già inserito nella pagina ispezionata. In caso contrario, l'espressione non viene valutata e il callback viene richiamato con il parametro di eccezione impostato su un oggetto con il campo isError impostato su true e il campo code impostato su E_NOTFOUND.

  • callback

    funzione facoltativa

    Il parametro callback ha il seguente aspetto:

    (result: object, exceptionInfo: object) => void

    • risultato

      oggetto

      Il risultato della valutazione.

    • exceptionInfo

      oggetto

      Un oggetto che fornisce dettagli se si è verificata un'eccezione durante la valutazione dell'espressione.

      • codice

        stringa

        Impostato se l'errore si è verificato sul lato DevTools prima che l'espressione venga valutata.

      • descrizione

        stringa

        Impostato se l'errore si è verificato sul lato DevTools prima che l'espressione venga valutata.

      • dettagli

        qualsiasi[]

        Impostato se l'errore si è verificato sul lato DevTools prima della valutazione dell'espressione, contiene l'array dei valori che possono essere sostituiti nella stringa di descrizione per fornire ulteriori informazioni sulla causa dell'errore.

      • isError

        booleano

        Impostato se l'errore si è verificato sul lato DevTools prima che l'espressione venga valutata.

      • isException

        booleano

        Impostalo se il codice valutato produce un'eccezione non gestita.

      • valore

        stringa

        Impostalo se il codice valutato produce un'eccezione non gestita.

getResources()

chrome.devtools.inspectedWindow.getResources(
  callback: function,
)

Recupera l'elenco di risorse dalla pagina ispezionata.

Parametri

  • callback

    funzione

    Il parametro callback ha il seguente aspetto:

    (resources: Resource[]) => void

    • risorse

      Le risorse all'interno della pagina.

reload()

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

Consente di ricaricare la pagina ispezionata.

Parametri

  • reloadOptions

    oggetto facoltativo

    • ignoreCache

      booleano facoltativo

      Se impostato su true, il caricatore ignorerà la cache per tutte le risorse della pagina ispezionate caricate prima che venga attivato l'evento load. L'effetto è simile alla pressione di Ctrl+Maiusc+R nella finestra ispezionata o all'interno della finestra Strumenti per sviluppatori.

    • injectedScript

      stringa facoltativo

      Se specificato, lo script verrà inserito in ogni frame della pagina ispezionata subito dopo il caricamento, prima di qualsiasi script del frame. Lo script non verrà inserito dopo successivi ricaricamenti, ad esempio se l'utente preme Ctrl+R.

    • userAgent

      stringa facoltativo

      Se specificata, la stringa sostituirà il valore dell'intestazione HTTP User-Agent inviata durante il caricamento delle risorse della pagina ispezionata. La stringa sostituirà anche il valore della proprietà navigator.userAgent restituita a tutti gli script in esecuzione nella pagina ispezionata.

Eventi

onResourceAdded

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

Attivato quando viene aggiunta una nuova risorsa alla pagina ispezionata.

Parametri

  • callback

    funzione

    Il parametro callback ha il seguente aspetto:

    (resource: Resource) => void

onResourceContentCommitted

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

Attivato quando viene eseguito il commit di una nuova revisione della risorsa (ad es. l'utente salva una versione modificata della risorsa negli Strumenti per sviluppatori).

Parametri

  • callback

    funzione

    Il parametro callback ha il seguente aspetto:

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

    • risorsa
    • contenuti

      stringa