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 evalverwendet 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 inspectund$0enthalten.
- 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
- 
    URLString Die URL der Ressource. 
- 
    getContentvoidm Ruft den Inhalt der Ressource ab. Die Funktion getContentsieht so aus: <ph type="x-smartling-placeholder"></ph>(callback: function) => {...} - 
    callbackFunktion Der Parameter callbacksieht so aus: <ph type="x-smartling-placeholder"></ph>(content: string, encoding: string) => void - 
    InhaltString Inhalt der Ressource (möglicherweise codiert). 
- 
    encodingString Leer, wenn der Inhalt nicht codiert ist, andernfalls Codierungsname. Derzeit wird nur Base64 unterstützt. 
 
- 
    
 
- 
    
- 
    Inhalt festlegenvoidm Legt den Inhalt der Ressource fest. Die Funktion setContentsieht so aus: <ph type="x-smartling-placeholder"></ph>(content: string, commit: boolean, callback?: function) => {...} - 
    InhaltString Neuer Inhalt der Ressource. Derzeit werden nur Ressourcen vom Typ Text unterstützt. 
- 
    commitboolean "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. 
- 
    callbackFunktion optional Der Parameter callbacksieht so aus: <ph type="x-smartling-placeholder"></ph>(error?: object) => void - 
    FehlerObjekt 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,
): void
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
- 
    AusdruckString Ein Ausdruck, der ausgewertet werden soll. 
- 
    OptionenObjekt optional Der Optionsparameter kann eine oder mehrere Optionen enthalten. - 
    frameURLString 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. 
- 
    scriptExecutionContextString 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. 
- 
    useContentScriptContextBoolescher 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 isErrorauf „true“ und das FeldcodeaufE_NOTFOUNDgesetzt ist.
 
- 
    
- 
    callbackFunktion optional Der Parameter callbacksieht so aus: <ph type="x-smartling-placeholder"></ph>(result: object, exceptionInfo: object) => void - 
    ErgebnisObjekt Das Ergebnis der Bewertung. 
- 
    exceptionInfoObjekt Ein Objekt, das Details bereitstellt, wenn beim Bewerten des Ausdrucks eine Ausnahme aufgetreten ist. - 
    CodeString Legt fest, ob der Fehler in den Entwicklertools aufgetreten ist, bevor der Ausdruck ausgewertet wird. 
- 
    BeschreibungString Legt fest, ob der Fehler in den Entwicklertools aufgetreten ist, bevor der Ausdruck ausgewertet wird. 
- 
    DetailsBeliebig[] 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. 
- 
    isErrorboolean Legt fest, ob der Fehler in den Entwicklertools aufgetreten ist, bevor der Ausdruck ausgewertet wird. 
- 
    isExceptionboolean Legt fest, wenn der ausgewertete Code eine unbehandelte Ausnahme erzeugt. 
- 
    WertString Legt fest, wenn der ausgewertete Code eine unbehandelte Ausnahme erzeugt. 
 
- 
    
 
- 
    
getResources()
chrome.devtools.inspectedWindow.getResources(
callback: function,
): void
Ruft die Liste der Ressourcen von der untersuchten Seite ab.
Parameter
- 
    callbackFunktion Der Parameter callbacksieht so aus: <ph type="x-smartling-placeholder"></ph>(resources: Resource[]) => void - 
    RessourcenDie Ressourcen auf der Seite. 
 
- 
    
reload()
chrome.devtools.inspectedWindow.reload(
reloadOptions?: object,
): void
Lädt die geprüfte Seite neu.
Parameter
- 
    reloadOptionsObjekt optional - 
    ignoreCacheBoolescher 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.
- 
    injectedScriptString 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. 
- 
    userAgentString 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
- 
    callbackFunktion Der Parameter callbacksieht 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).