tabs.insertCSS()
Injiziert CSS in eine Seite.
Hinweis:
Beim Verwenden von Manifest V3 oder höher, verwenden Sie scripting.insertCSS() und scripting.removeCSS(), um CSS einzufügen und zu entfernen.
Um diese API zu verwenden, müssen Sie die Berechtigung für die URL der Seite haben, entweder explizit als Host-Berechtigung oder durch Verwendung der activeTab-Berechtigung.
Sie können CSS nur in Seiten injizieren, deren URL mit einem Übereinstimmungsmuster ausgedrückt werden kann: das bedeutet, dass das Schema "http", "https" oder "file" sein muss. Das bedeutet, dass Sie kein CSS in eine der eingebauten Seiten des Browsers injizieren können, wie etwa about:debugging, about:addons oder die Seite, die geöffnet wird, wenn Sie einen neuen leeren Tab öffnen.
Hinweis: Firefox löst URLs in injizierten CSS-Dateien relativ zur CSS-Datei selbst auf, anstatt zur Seite, in die sie injiziert wird.
Das eingefügte CSS kann durch Aufrufen von tabs.removeCSS() wieder entfernt werden.
Dies ist eine asynchrone Funktion, die ein Promise zurückgibt (nur in Firefox).
Syntax
let inserting = browser.tabs.insertCSS(
tabId, // optional integer
details // object
)
Parameter
tabIdOptional-
integer. Die ID des Tabs, in den das CSS eingefügt werden soll. Standardmäßig der aktive Tab im aktuellen Fenster. details-
Ein Objekt, das das einzufügende CSS beschreibt. Es enthält die folgenden Eigenschaften:
allFramesOptional-
boolean. Wenntrue, wird das CSS in alle Frames der aktuellen Seite injiziert. Wennfalse, wird das CSS nur in den obersten Frame injiziert. Standardmäßigfalse. codeOptional-
string. Der zu injizierende Code als Text-String. cssOriginOptional-
string. Kann einen der beiden Werte annehmen: "user", um das CSS als Benutzer-Stylesheet hinzuzufügen oder "author", um es als Autoren-Stylesheet hinzuzufügen. Wenn diese Option weggelassen wird, wird das CSS als Autoren-Stylesheet hinzugefügt.- "user" ermöglicht es Ihnen, zu verhindern, dass Websites das von Ihnen eingefügte CSS überschreiben: siehe Kaskadierungsreihenfolge.
- "author"-Stylesheets verhalten sich, als ob sie nach allen vom Web veröffentlichten Autoren-Regeln erscheinen. Dieses Verhalten schließt alle Autoren-Stylesheets ein, die dynamisch durch die Skripte der Seite hinzugefügt wurden, selbst wenn diese Addition nach Abschluss des
insertCSS-Aufrufs erfolgt.
fileOptional-
string. Pfad zu einer Datei, die den zu injizierenden Code enthält. In Firefox werden relative URLs relativ zur aktuellen Seiten-URL aufgelöst. In Chrome werden diese URLs relativ zur Basis-URL der Erweiterung aufgelöst. Um browserübergreifend zu funktionieren, können Sie den Pfad als absolute URL angeben, beginnend beim Stamm der Erweiterung, wie folgt:"/path/to/stylesheet.css". frameIdOptional-
integer. Der Frame, in den das CSS injiziert werden soll. Standardmäßig0(der oberste Frame). matchAboutBlankOptional-
boolean. Wenntrue, wird der Code in eingebettete "about:blank"- und "about:srcdoc"-Frames injiziert, wenn Ihre Erweiterung Zugriff auf deren übergeordnetes Dokument hat. Der Code kann nicht in oberste about:-Frames eingefügt werden. Standardmäßigfalse. runAtOptional-
extensionTypes.RunAt. Der früheste Zeitpunkt, zu dem der Code in den Tab injiziert wird. Standardmäßig "document_idle".
Rückgabewert
Ein Promise, das ohne Argumente erfüllt wird, wenn das gesamte CSS eingefügt wurde. Tritt ein Fehler auf, wird das Promise mit einer Fehlermeldung abgelehnt.
Beispiele
Dieses Beispiel fügt CSS in den aktuell aktiven Tab ein, das aus einem String genommen wird.
let css = "body { border: 20px dotted pink; }";
browser.browserAction.onClicked.addListener(() => {
function onError(error) {
console.log(`Error: ${error}`);
}
let insertingCSS = browser.tabs.insertCSS({ code: css });
insertingCSS.then(null, onError);
});
Dieses Beispiel fügt CSS ein, das aus einer mit der Erweiterung gepackten Datei geladen wird. Das CSS wird in den Tab eingefügt, dessen ID 2 ist:
browser.browserAction.onClicked.addListener(() => {
function onError(error) {
console.log(`Error: ${error}`);
}
let insertingCSS = browser.tabs.insertCSS(2, { file: "content-style.css" });
insertingCSS.then(null, onError);
});
Beispielerweiterungen
Browser-Kompatibilität
Hinweis:
Diese API basiert auf Chromium's chrome.tabs API. Diese Dokumentation ist abgeleitet von tabs.json im Chromium-Code.