Movatterモバイル変換


[0]ホーム

URL:


  1. Mozilla
  2. Add-ons
  3. Browser-Erweiterungen
  4. JavaScript-APIs
  5. tabs
  6. tabs.executeScript()

Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten.Erfahre mehr über dieses Experiment.

View in EnglishAlways switch to English

tabs.executeScript()

Fügt JavaScript-Code in eine Seite ein.

Hinweis:Bei der Verwendung von Manifest V3 oder höher verwenden Siescripting.executeScript(), um Skripte auszuführen.

Sie können Code in Seiten injizieren, deren URL sich durch einMuster zum Abgleich ausdrücken lässt. Zu diesem Zweck muss das Schema eines der folgenden sein:http,https oderfile.

Sie müssen die Berechtigung für die URL der Seite haben - entweder explizit alsHost-Berechtigung - oder über dieactiveTab-Berechtigung. Beachten Sie, dass einige spezielle Seiten diese Berechtigung nicht zulassen, einschließlich der Leseansicht, view-source und PDF-Viewer-Seiten.

Sie können auch Code in Seiten injizieren, die mit Ihrer eigenen Erweiterung gepackt sind:

js
browser.tabs.create({ url: "/my-page.html" }).then(() => {  browser.tabs.executeScript({    code: `console.log('location:', window.location.href);`,  });});

Dazu benötigen Sie keine besonderen Berechtigungen.

Sie könnenkeinen Code in eine der eingebauten Seiten des Browsers injizieren, wie z.B.:about:debugging,about:addons oder die Seite, die beim Öffnen eines neuen leeren Tabs geöffnet wird.

Die von Ihnen injizierten Skripte werdenContent-Skripte genannt.

Dies ist eine asynchrone Funktion, die einPromise zurückgibt.

Syntax

js
let executing = browser.tabs.executeScript(  tabId,                 // optional integer  details                // object)

Parameter

tabIdOptional

integer. Die ID des Tabs, in dem das Skript ausgeführt werden soll.

Standardmäßig wird der aktive Tab des aktuellen Fensters verwendet.

details

Ein Objekt, das das auszuführende Skript beschreibt.

Es enthält die folgenden Eigenschaften:

allFramesOptional

boolean. Wenntrue, wird der Code in alle Frames der aktuellen Seite injiziert.

Isttrue undframeId gesetzt, wird ein Fehler ausgelöst. (frameId undallFrames schließen sich gegenseitig aus.)

Ist esfalse, wird der Code nur in den obersten Frame injiziert.

Der Standardwert istfalse.

codeOptional

string. Der zu injizierende Code als Textzeichenfolge.

Warnung:Verwenden Sie diese Eigenschaft nicht, um nicht vertrauenswürdige Daten in JavaScript zu interpolieren, da dies zu einem Sicherheitsproblem führen könnte.

fileOptional

string. Pfad zu einer Datei, die den zu injizierenden Code enthält.

  • In Firefox werden relative URLs, die nicht im Wurzelverzeichnis der Erweiterung beginnen, relativ zur aktuellen Seiten-URL aufgelöst.
  • In Chrome werden diese URLs relativ zur Basis-URL der Erweiterung aufgelöst.

Um in mehreren Browsern zu funktionieren, können Sie den Pfad als relative URL angeben, beginnend am Wurzelverzeichnis der Erweiterung, wie folgt:"/path/to/script.js".

frameIdOptional

integer. Der Frame, in den der Code injiziert werden soll.

Der Standardwert ist0 (der oberste Frame).

matchAboutBlankOptional

boolean. Wenntrue, wird der Code in eingebetteteabout:blank undabout:srcdoc Frames injiziert, wenn Ihre Erweiterung Zugriff auf deren Elterndokument hat. Der Code kann nicht in obersteabout: Frames eingefügt werden.

Der Standardwert istfalse.

runAtOptional

extensionTypes.RunAt. Der früheste Zeitpunkt, zu dem der Code in den Tab injiziert wird.

Der Standardwert ist"document_idle".

Rückgabewert

EinPromise, das in ein Array von Objekten aufgelöst wird. Die Werte des Arrays stellen das Ergebnis des Skripts in jedem injizierten Frame dar.

Das Ergebnis des Skripts ist die letzte ausgewertete Anweisung, ähnlich wie das, was (die Ergebnisse, nicht derconsole.log()-Output) ausgegeben würde, wenn Sie das Skript in derWeb-Konsole ausführen. Betrachten Sie zum Beispiel ein Skript wie dieses:

js
let foo = "my result";foo;

Hier wird das Ergebnis-Array die Zeichenfolge"my result" als Element enthalten.

Die Ergebniswerte müssenstructured cloneable sein (sieheDatenklon-Algorithmus).

Hinweis:Die letzte Anweisung kann auch einPromise sein, aber diese Funktion wird von derwebextension-polyfill-Bibliothek nicht unterstützt.

Tritt ein Fehler auf, wird das Promise mit einer Fehlermeldung abgelehnt.

Beispiele

Dieses Beispiel führt ein einzeiliges Code-Snippet im aktuell aktiven Tab aus:

js
function onExecuted(result) {  console.log(`We made it green`);}function onError(error) {  console.log(`Error: ${error}`);}const makeItGreen = 'document.body.style.border = "5px solid green"';const executing = browser.tabs.executeScript({  code: makeItGreen,});executing.then(onExecuted, onError);

Dieses Beispiel führt ein Skript aus einer Datei aus (die mit der Erweiterung gepackt ist) namens"content-script.js". Das Skript wird im aktuell aktiven Tab ausgeführt. Das Skript wird sowohl in Subframes als auch im Hauptdokument ausgeführt:

js
function onExecuted(result) {  console.log(`We executed in all subframes`);}function onError(error) {  console.log(`Error: ${error}`);}const executing = browser.tabs.executeScript({  file: "/content-script.js",  allFrames: true,});executing.then(onExecuted, onError);

Dieses Beispiel führt ein Skript aus einer Datei aus (die mit der Erweiterung gepackt ist) namens"content-script.js". Das Skript wird im Tab mit der ID2 ausgeführt:

js
function onExecuted(result) {  console.log(`We executed in tab 2`);}function onError(error) {  console.log(`Error: ${error}`);}const executing = browser.tabs.executeScript(2, {  file: "/content-script.js",});executing.then(onExecuted, onError);

Beispielerweiterungen

Browser-Kompatibilität

Hinweis:Diese API basiert auf Chromiumschrome.tabs API. Diese Dokumentation ist abgeleitet vontabs.json im Chromium-Code.

Help improve MDN

Learn how to contribute Diese Seite wurde automatisch aus dem Englischen übersetzt.

[8]ページ先頭

©2009-2025 Movatter.jp