chrome.devtools.inspectedWindow

Beschrijving

Gebruik de chrome.devtools.inspectedWindow API voor interactie met het geïnspecteerde venster: verkrijg de tabblad-ID voor de geïnspecteerde pagina, evalueer de code in de context van het geïnspecteerde venster, laad de pagina opnieuw of verkrijg de lijst met bronnen op de pagina.

Zie het overzicht van DevTools API's voor een algemene inleiding tot het gebruik van Developer Tools API's.

De eigenschap tabId biedt de tabblad-ID die u kunt gebruiken bij de chrome.tabs.* API-aanroepen. Houd er echter rekening mee dat chrome.tabs.* API vanwege veiligheidsoverwegingen niet wordt weergegeven op de Developer Tools-extensiepagina's. U moet de tabblad-ID doorgeven aan de achtergrondpagina en vanaf daar de chrome.tabs.* API-functies aanroepen.

De reload kan worden gebruikt om de geïnspecteerde pagina opnieuw te laden. Bovendien kan de beller een overschrijving opgeven voor de user-agentstring, een script dat vroeg bij het laden van de pagina wordt geïnjecteerd, of een optie om het herladen van in de cache opgeslagen bronnen te forceren.

Gebruik de getResources aanroep en de onResourceContent gebeurtenis om de lijst met bronnen (documenten, stylesheets, scripts, afbeeldingen, enz.) op de geïnspecteerde pagina te verkrijgen. De methoden getContent en setContent van de klasse Resource kunnen samen met de gebeurtenis onResourceContentCommitted worden gebruikt om wijziging van de broninhoud te ondersteunen, bijvoorbeeld door een externe editor.

Manifest

De volgende sleutels moeten in het manifest worden gedeclareerd om deze API te kunnen gebruiken.

"devtools_page"

Voer code uit in het geïnspecteerde venster

De eval methode biedt extensies de mogelijkheid om JavaScript-code uit te voeren in de context van de geïnspecteerde pagina. Deze methode is krachtig als deze in de juiste context wordt gebruikt en gevaarlijk als deze op de verkeerde manier wordt gebruikt. Gebruik de methode tabs.executeScript tenzij u de specifieke functionaliteit nodig hebt die de eval -methode biedt.

Dit zijn de belangrijkste verschillen tussen de methoden eval en tabs.executeScript :

  • De eval methode gebruikt geen geïsoleerde wereld voor de code die wordt geëvalueerd, dus de JavaScript-status van het geïnspecteerde venster is toegankelijk voor de code. Gebruik deze methode wanneer toegang tot de JavaScript-status van de geïnspecteerde pagina vereist is.
  • De uitvoeringscontext van de code die wordt geëvalueerd, omvat de Developer Tools-console-API . De code kan bijvoorbeeld inspect en $0 gebruiken.
  • De geëvalueerde code retourneert mogelijk een waarde die wordt doorgegeven aan de extensie-callback. De geretourneerde waarde moet een geldig JSON-object zijn (deze mag alleen primitieve JavaScript-typen en acyclische verwijzingen naar andere JSON-objecten bevatten). Wees extra voorzichtig bij het verwerken van de gegevens die u van de geïnspecteerde pagina ontvangt; de uitvoeringscontext wordt in wezen bepaald door de geïnspecteerde pagina; een kwaadaardige pagina kan invloed hebben op de gegevens die naar de extensie worden geretourneerd.

Houd er rekening mee dat een pagina meerdere verschillende JavaScript-uitvoeringscontexten kan bevatten. Elk frame heeft zijn eigen context, plus een extra context voor elke extensie waarvoor inhoudsscripts in dat frame worden uitgevoerd.

Standaard wordt de eval methode uitgevoerd in de context van het hoofdframe van de geïnspecteerde pagina.

De eval methode heeft een optioneel tweede argument nodig dat u kunt gebruiken om de context op te geven waarin de code wordt geëvalueerd. Dit optieobject kan een of meer van de volgende sleutels bevatten:

frameURL
Gebruik deze optie om een ​​ander frame op te geven dan het hoofdframe van de geïnspecteerde pagina.
contextSecurityOrigin
Gebruik deze optie om een ​​context binnen het opgegeven frame te selecteren op basis van de weboorsprong .
useContentScriptContext
Indien waar, voer het script dan uit in dezelfde context als de inhoudsscripts van de extensies. (Gelijkwaardig aan het opgeven van de eigen weborganisatie van de extensie als de oorsprong van de contextbeveiliging.) Dit kan worden gebruikt om gegevens uit te wisselen met het inhoudsscript.

Voorbeelden

De volgende code controleert de versie van jQuery die door de geïnspecteerde pagina wordt gebruikt:

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

Als u deze API wilt uitproberen, installeert u de devtools API-voorbeelden uit de chrome-extension-samples- repository.

Soorten

Resource

Een bron binnen de geïnspecteerde pagina, zoals een document, een script of een afbeelding.

Eigenschappen

  • URL

    snaar

    De URL van de bron.

  • krijg inhoud

    leegte

    Haalt de inhoud van de bron op.

    De getContent functie ziet er als volgt uit:

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

    • terugbellen

      functie

      De callback parameter ziet er als volgt uit:

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

      • inhoud

        snaar

        Inhoud van de bron (mogelijk gecodeerd).

      • codering

        snaar

        Leeg als de inhoud niet is gecodeerd, anders codeernaam. Momenteel wordt alleen base64 ondersteund.

  • setInhoud

    leegte

    Stelt de inhoud van de bron in.

    De setContent functie ziet er als volgt uit:

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

    • inhoud

      snaar

      Nieuwe inhoud van de bron. Momenteel worden alleen bronnen met het teksttype ondersteund.

    • verbinden

      Booleaans

      Waar als de gebruiker klaar is met het bewerken van de bron en de nieuwe inhoud van de bron behouden moet blijven; false als dit een kleine wijziging is die wordt verzonden terwijl de gebruiker de bron bewerkt.

    • terugbellen

      functie optioneel

      De callback parameter ziet er als volgt uit:

      (error?: object) => void

      • fout

        object optioneel

        Stel in op ongedefinieerd als de broninhoud succesvol is ingesteld; beschrijft de fout anders.

Eigenschappen

tabId

De ID van het tabblad dat wordt geïnspecteerd. Deze ID kan worden gebruikt met de chrome.tabs.* API.

Type

nummer

Methoden

eval()

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

Evalueert een JavaScript-expressie in de context van het hoofdframe van de geïnspecteerde pagina. De expressie moet resulteren in een JSON-compatibel object, anders wordt er een uitzondering gegenereerd. De eval-functie kan een DevTools-fout of een JavaScript-uitzondering rapporteren die optreedt tijdens de evaluatie. In beide gevallen is de result van de callback undefined . In het geval van een fout aan de DevTools-zijde is de parameter isException niet nul en is isError ingesteld op true en is code ingesteld op een foutcode. In het geval van een JavaScript-fout wordt isException ingesteld op true en wordt value ingesteld op de tekenreekswaarde van het gegenereerde object.

Parameters

  • uitdrukking

    snaar

    Een uitdrukking om te evalueren.

  • opties

    object optioneel

    De parameter options kan een of meer opties bevatten.

    • frameURL

      tekenreeks optioneel

      Indien opgegeven, wordt de expressie geëvalueerd op het iframe waarvan de URL overeenkomt met de opgegeven URL. Standaard wordt de expressie geëvalueerd in het bovenste frame van de geïnspecteerde pagina.

    • scriptExecutionContext

      tekenreeks optioneel

      Chroom 107+

      Evalueer de expressie in de context van een inhoudsscript van een extensie die overeenkomt met de opgegeven oorsprong. Indien opgegeven, overschrijft scriptExecutionContext de instelling 'true' op useContentScriptContext.

    • gebruikContentScriptContext

      Booleaans optioneel

      Evalueer de expressie in de context van het inhoudsscript van de aanroepende extensie, op voorwaarde dat het inhoudsscript al in de geïnspecteerde pagina is geïnjecteerd. Als dit niet het geval is, wordt de expressie niet geëvalueerd en wordt de callback aangeroepen met de uitzonderingsparameter ingesteld op een object waarvoor het veld isError is ingesteld op true en het code is ingesteld op E_NOTFOUND .

  • terugbellen

    functie optioneel

    De callback parameter ziet er als volgt uit:

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

    • resultaat

      voorwerp

      Het resultaat van de evaluatie.

    • uitzonderingInfo

      voorwerp

      Een object dat details verstrekt als er een uitzondering is opgetreden tijdens het evalueren van de expressie.

      • code

        snaar

        Stel in of de fout is opgetreden aan de DevTools-kant voordat de expressie werd geëvalueerd.

      • beschrijving

        snaar

        Stel in of de fout is opgetreden aan de DevTools-kant voordat de expressie werd geëvalueerd.

      • details

        elk[]

        Instellen of de fout is opgetreden aan de DevTools-kant voordat de expressie is geëvalueerd, bevat de array met waarden die in de beschrijvingsreeks kunnen worden vervangen om meer informatie te geven over de oorzaak van de fout.

      • isFout

        Booleaans

        Stel in of de fout is opgetreden aan de DevTools-kant voordat de expressie werd geëvalueerd.

      • isUitzondering

        Booleaans

        Stel in of de geëvalueerde code een onverwerkte uitzondering oplevert.

      • waarde

        snaar

        Stel in of de geëvalueerde code een onverwerkte uitzondering oplevert.

getResources()

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

Haalt de lijst met bronnen op van de geïnspecteerde pagina.

Parameters

  • terugbellen

    functie

    De callback parameter ziet er als volgt uit:

    (resources: Resource[]) => void

    • bronnen

      Bron []

      De bronnen op de pagina.

reload()

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

Laadt de geïnspecteerde pagina opnieuw.

Parameters

  • herlaadopties

    object optioneel

    • negeer cache

      Booleaans optioneel

      Indien waar, zal de lader de cache omzeilen voor alle geïnspecteerde paginabronnen die zijn geladen voordat de load gebeurtenis wordt geactiveerd. Het effect is vergelijkbaar met het indrukken van Ctrl+Shift+R in het geïnspecteerde venster of in het venster Ontwikkelaarstools.

    • geïnjecteerdScript

      tekenreeks optioneel

      Indien gespecificeerd, wordt het script onmiddellijk na het laden in elk frame van de geïnspecteerde pagina geïnjecteerd, vóór een van de scripts van het frame. Het script wordt niet geïnjecteerd na daaropvolgende herlaadbeurten, bijvoorbeeld als de gebruiker op Ctrl+R drukt.

    • gebruikerAgent

      tekenreeks optioneel

      Indien opgegeven, overschrijft de tekenreeks de waarde van de User-Agent HTTP-header die wordt verzonden tijdens het laden van de bronnen van de geïnspecteerde pagina. De tekenreeks overschrijft ook de waarde van de eigenschap navigator.userAgent die wordt geretourneerd naar scripts die op de geïnspecteerde pagina worden uitgevoerd.

Evenementen

onResourceAdded

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

Wordt geactiveerd wanneer een nieuwe bron wordt toegevoegd aan de geïnspecteerde pagina.

Parameters

  • terugbellen

    functie

    De callback parameter ziet er als volgt uit:

    (resource: Resource) => void

onResourceContentCommitted

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

Wordt geactiveerd wanneer een nieuwe revisie van de bron wordt vastgelegd (de gebruiker slaat bijvoorbeeld een bewerkte versie van de bron op in de Developer Tools).

Parameters

  • terugbellen

    functie

    De callback parameter ziet er als volgt uit:

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

    • bron
    • inhoud

      snaar