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
evalmethode 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
inspecten$0gebruiken. - 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
getContentfunctie ziet er als volgt uit:(callback: function) => {...}
- terugbellen
functie
De
callbackparameter 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
setContentfunctie 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
callbackparameter 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,
): void
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
isErroris ingesteld op true en hetcodeis ingesteld opE_NOTFOUND.
- terugbellen
functie optioneel
De
callbackparameter 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,
): void
Haalt de lijst met bronnen op van de geïnspecteerde pagina.
Parameters
reload()
chrome.devtools.inspectedWindow.reload(
reloadOptions?: object,
): void
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
loadgebeurtenis 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-AgentHTTP-header die wordt verzonden tijdens het laden van de bronnen van de geïnspecteerde pagina. De tekenreeks overschrijft ook de waarde van de eigenschapnavigator.userAgentdie 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
callbackparameter 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).