Beschreibung
Verwenden Sie die chrome.devtools.inspectedWindow
API, um mit dem untersuchten Fenster zu interagieren: Rufen Sie die Tab-ID der untersuchten Seite ab, bewerten Sie den Code im Kontext des untersuchten Fensters, aktualisieren Sie die Seite oder rufen Sie die Liste der Ressourcen auf der Seite ab.
Manifest
Die folgenden Schlüssel müssen im Manifest deklariert werden, um diese API verwenden zu können.
"devtools_page"
Verwenden Sie chrome.devtools.inspectedWindow
, um mit dem untersuchten Fenster zu interagieren: Rufen Sie die Tab-ID für
der untersuchten Seite, werten Sie den Code im Kontext des untersuchten Fensters aus, laden Sie die Seite neu oder rufen Sie
die Liste der Ressourcen auf der Seite.
Eine allgemeine Einführung zur Verwendung der Entwicklertools-APIs finden Sie in der Zusammenfassung der Entwicklertools.
Übersicht
Die Eigenschaft tabId
enthält die Tab-ID, die Sie mit dem chrome.tabs.*
verwenden können
API-Aufrufe Beachten Sie jedoch, dass die chrome.tabs.*
API nicht für die Entwicklertools verfügbar ist.
Erweiterungsseiten aus Sicherheitsgründen – Sie müssen die Tab-ID an den Hintergrund
und die API-Funktionen von chrome.tabs.*
von dort aus aufrufen.
Die Methode reload
kann verwendet werden, um die geprüfte Seite neu zu laden. Außerdem kann der Aufrufer angeben,
eine Überschreibung für den User-Agent-String, ein Skript, das beim Seitenaufbau vorzeitig eingeschleust wird, oder ein
Option, um das Aktualisieren von im Cache gespeicherten Ressourcen zu erzwingen.
Verwenden Sie den Aufruf getResources
und das Ereignis onResourceContent
, um die Liste der Ressourcen abzurufen
(Dokumente, Stylesheets, Skripte, Bilder usw.) auf der untersuchten Seite. Die getContent
und
Die setContent
-Methoden der Klasse Resource
können zusammen mit dem onResourceContentCommitted
-Ereignis
werden verwendet, um Änderungen des Ressourceninhalts zu unterstützen, z. B. durch einen externen Mitbearbeiter.
Code im geprüften Fenster ausführen
Die Methode eval
bietet Erweiterungen die Möglichkeit, JavaScript-Code im Kontext eines
der untersuchten Seite. Diese Methode ist leistungsstark, wenn sie im richtigen Kontext verwendet wird, und gefährlich, wenn sie verwendet wird.
die nicht unangemessen sind. Verwenden Sie die Methode tabs.executeScript
, es sei denn, Sie benötigen die entsprechende Funktion
die die eval
-Methode bietet.
Hier sind die Hauptunterschiede zwischen den Methoden eval
und tabs.executeScript
:
- Die Methode
eval
verwendet für den auszuwertenden Code keine isolierte Welt, sodass das JavaScript des überprüften Fensters für den Code zugänglich ist. Verwenden Sie diese Methode beim Zugriff auf die Der JavaScript-Status der geprüften Seite ist erforderlich. - Der Ausführungskontext des zu bewertenden Codes umfasst die Developer Tools Console API.
Der Code kann beispielsweise
inspect
und$0
enthalten. - Der ausgewertete Code kann einen Wert zurückgeben, der an den Erweiterungs-Callback übergeben wird. Den zurückgegebenen Wert muss ein gültiges JSON-Objekt sein (es darf nur primitive JavaScript-Typen und azyklische Verweise auf andere JSON-Objekte). Bitte sei besonders vorsichtig, wenn du die erhaltenen Daten verarbeitet hast. von der untersuchten Seite aus. Der Ausführungskontext wird im Wesentlichen von der untersuchten Seite gesteuert. eine kann sich auf die Daten auswirken, die an die Erweiterung zurückgegeben werden.
Eine Seite kann mehrere verschiedene Kontexte für die JavaScript-Ausführung enthalten. Jeder Frame hat eine eigene eigenen Kontext sowie einen zusätzlichen Kontext für jede Erweiterung, in der Inhaltsskripte ausgeführt werden. Frame.
Die Methode eval
wird standardmäßig im Kontext des Hauptframes der untersuchten Seite ausgeführt.
Die Methode eval
verwendet ein optionales zweites Argument, mit dem Sie den Kontext angeben können, in dem
wird der Code ausgewertet. Dieses options-Objekt kann einen oder mehrere der folgenden Schlüssel enthalten:
frameURL
- Hier können Sie einen anderen Frame als den Hauptframe der geprüften Seite angeben.
contextSecurityOrigin
- Mit dieser Option können Sie einen Kontext innerhalb des angegebenen Frames nach seiner Webursprung auswählen.
useContentScriptContext
- Bei „true“ wird das Script im selben Kontext wie die Inhaltsskripte der Erweiterungen ausgeführt. (Entspricht Dabei wird die eigene Webquelle der Erweiterung als Kontextsicherheitsquelle angegeben.) Dies kann verwendet werden, um Daten mit dem Content-Skript austauschen.
Beispiele
Mit dem folgenden Code wird nach der von der untersuchten Seite verwendeten jQuery-Version gesucht:
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);
}
}
);
Um diese API auszuprobieren, installieren Sie die devtools API-Beispiele aus chrome-extension-samples zu erstellen.
Typen
Resource
Eine Ressource auf der untersuchten Seite, z. B. ein Dokument, ein Skript oder ein Bild.
Attribute
-
URL
String
Die URL der Ressource.
-
getContent
voidm
Ruft den Inhalt der Ressource ab.
Die Funktion
getContent
sieht so aus: <ph type="x-smartling-placeholder"></ph>(callback: function) => {...}
-
callback
Funktion
Der Parameter
callback
sieht so aus: <ph type="x-smartling-placeholder"></ph>(content: string, encoding: string) => void
-
Inhalt
String
Inhalt der Ressource (möglicherweise codiert).
-
encoding
String
Leer, wenn der Inhalt nicht codiert ist, andernfalls Codierungsname. Derzeit wird nur Base64 unterstützt.
-
-
-
Inhalt festlegen
voidm
Legt den Inhalt der Ressource fest.
Die Funktion
setContent
sieht so aus: <ph type="x-smartling-placeholder"></ph>(content: string, commit: boolean, callback?: function) => {...}
-
Inhalt
String
Neuer Inhalt der Ressource. Derzeit werden nur Ressourcen vom Typ Text unterstützt.
-
commit
boolean
"True", wenn der Nutzer die Bearbeitung der Ressource abgeschlossen hat und der neue Inhalt der Ressource beibehalten werden soll. "false", wenn es sich um eine kleine Änderung handelt, die während der Bearbeitung der Ressource durch den Nutzer gesendet wird.
-
callback
Funktion optional
Der Parameter
callback
sieht so aus: <ph type="x-smartling-placeholder"></ph>(error?: object) => void
-
Fehler
Objekt optional
Wird auf „nicht definiert“ gesetzt, wenn der Ressourceninhalt festgelegt wurde. beschreibt Fehler ansonsten.
-
-
Attribute
tabId
Die ID des zu prüfenden Tabs. Diese ID kann mit chrome.tabs verwendet werden.* die API verwenden.
Typ
Zahl
Methoden
eval()
chrome.devtools.inspectedWindow.eval(
expression: string,
options?: object,
callback?: function,
)
Wertet einen JavaScript-Ausdruck im Kontext des Hauptframes der untersuchten Seite aus. Der Ausdruck muss ein JSON-kompatibles Objekt ergeben. Andernfalls wird eine Ausnahme ausgelöst. Die eval-Funktion kann entweder einen Fehler in den Entwicklertools oder eine JavaScript-Ausnahme melden, die während der Bewertung auftritt. In beiden Fällen lautet der result
-Parameter des Callbacks undefined
. Bei einem Fehler in den Entwicklertools ist der isException
-Parameter nicht null und isError
ist auf „true“ und code
auf einen Fehlercode gesetzt. Bei einem JavaScript-Fehler wird isException
auf „true“ und value
auf den Stringwert des ausgelösten Objekts gesetzt.
Parameter
-
Ausdruck
String
Ein Ausdruck, der ausgewertet werden soll.
-
Optionen
Objekt optional
Der Optionsparameter kann eine oder mehrere Optionen enthalten.
-
frameURL
String optional
Wenn angegeben, wird der Ausdruck in dem iFrame ausgewertet, dessen URL mit dem angegebenen übereinstimmt. Standardmäßig wird der Ausdruck im obersten Frame der untersuchten Seite ausgewertet.
-
scriptExecutionContext
String optional
Chrome 107 oder höherWertet den Ausdruck im Kontext eines Inhaltsskripts einer Erweiterung aus, die dem angegebenen Ursprung entspricht. Falls angegeben, überschreibt „scriptExecutionContext“ „true“ für "useContentScriptContext" festgelegt.
-
useContentScriptContext
Boolescher Wert optional
Werten Sie den Ausdruck im Kontext des Inhaltsskripts der aufrufenden Erweiterung aus, vorausgesetzt, das Inhaltsskript wurde bereits in die untersuchte Seite eingefügt. Andernfalls wird der Ausdruck nicht ausgewertet und der Callback wird aufgerufen, indem der Ausnahmeparameter auf ein Objekt gesetzt wird, bei dem das Feld
isError
auf „true“ und das Feldcode
aufE_NOTFOUND
gesetzt ist.
-
-
callback
Funktion optional
Der Parameter
callback
sieht so aus: <ph type="x-smartling-placeholder"></ph>(result: object, exceptionInfo: object) => void
-
Ergebnis
Objekt
Das Ergebnis der Bewertung.
-
exceptionInfo
Objekt
Ein Objekt, das Details bereitstellt, wenn beim Bewerten des Ausdrucks eine Ausnahme aufgetreten ist.
-
Code
String
Legt fest, ob der Fehler in den Entwicklertools aufgetreten ist, bevor der Ausdruck ausgewertet wird.
-
Beschreibung
String
Legt fest, ob der Fehler in den Entwicklertools aufgetreten ist, bevor der Ausdruck ausgewertet wird.
-
Details
Beliebig[]
Legt fest, ob der Fehler auf der Entwicklertools-Seite vor der Auswertung des Ausdrucks aufgetreten ist. Enthält das Array der Werte, die in den Beschreibungsstring ersetzt werden können, um weitere Informationen zur Ursache des Fehlers bereitzustellen.
-
isError
boolean
Legt fest, ob der Fehler in den Entwicklertools aufgetreten ist, bevor der Ausdruck ausgewertet wird.
-
isException
boolean
Legt fest, wenn der ausgewertete Code eine unbehandelte Ausnahme erzeugt.
-
Wert
String
Legt fest, wenn der ausgewertete Code eine unbehandelte Ausnahme erzeugt.
-
-
getResources()
chrome.devtools.inspectedWindow.getResources(
callback: function,
)
Ruft die Liste der Ressourcen von der untersuchten Seite ab.
Parameter
-
callback
Funktion
Der Parameter
callback
sieht so aus: <ph type="x-smartling-placeholder"></ph>(resources: Resource[]) => void
-
Ressourcen
Die Ressourcen auf der Seite.
-
reload()
chrome.devtools.inspectedWindow.reload(
reloadOptions?: object,
)
Lädt die geprüfte Seite neu.
Parameter
-
reloadOptions
Objekt optional
-
ignoreCache
Boolescher Wert optional
Ist dieser Wert auf „true“ gesetzt, umgeht das Ladeprogramm den Cache für alle geprüften Seitenressourcen, die geladen werden, bevor das
load
-Ereignis ausgelöst wird. Der Effekt ähnelt dem Drücken von Strg + Umschalttaste + R im untersuchten Fenster oder im Fenster der Entwicklertools. -
injectedScript
String optional
Wenn angegeben, wird das Skript unmittelbar beim Laden in jeden Frame der untersuchten Seite vor den Skripts des Frames eingeschleust. Das Skript wird nach nachfolgenden Neuladevorgängen nicht eingefügt, z. B. wenn der Nutzer Strg + R drückt.
-
userAgent
String optional
Wenn angegeben, überschreibt der String den Wert des HTTP-Headers
User-Agent
, der beim Laden der Ressourcen der untersuchten Seite gesendet wird. Mit dem String wird auch der Wert der Eigenschaftnavigator.userAgent
überschrieben, der an alle Skripts zurückgegeben wird, die auf der untersuchten Seite ausgeführt werden.
-
Ereignisse
onResourceAdded
chrome.devtools.inspectedWindow.onResourceAdded.addListener(
callback: function,
)
Wird ausgelöst, wenn der geprüften Seite eine neue Ressource hinzugefügt wird
Parameter
-
callback
Funktion
Der Parameter
callback
sieht so aus: <ph type="x-smartling-placeholder"></ph>(resource: Resource) => void
-
Ressource
-
onResourceContentCommitted
chrome.devtools.inspectedWindow.onResourceContentCommitted.addListener(
callback: function,
)
Wird ausgelöst, wenn ein Commit für eine neue Version der Ressource durchgeführt wird (z.B. wenn der Nutzer eine bearbeitete Version der Ressource in den Entwicklertools speichert).