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.
Manifest
De volgende sleutels moeten in het manifest worden gedeclareerd om deze API te kunnen gebruiken.
"devtools_page"
Gebruik chrome.devtools.inspectedWindow
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.
Overzicht
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.
Code uitvoeren 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 hetcode
is ingesteld opE_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
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 eigenschapnavigator.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
- bron
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).