scripting.insertCSS()
Injects CSS into a page.
Note: This method is available in Manifest V3 or higher in Chrome and Firefox 101. In Safari and Firefox 102+, this method is also available in Manifest V2.
To use this API you must have the "scripting" permission and permission for the target's URL, either explicitly as a host permission or using the activeTab permission.
You can only inject CSS into pages whose URL can be expressed using a match pattern: meaning, its scheme must be one of "http", "https", or "file". This means that you can't inject CSS into any of the browser's built-in pages, such as about:debugging, about:addons, or the page that opens when you open a new empty tab.
Note: Firefox resolves URLs in injected CSS files relative to the CSS file itself, rather than to the page it's injected into.
The inserted CSS can be removed by calling scripting.removeCSS().
This is an asynchronous function that returns a Promise.
Syntax
await browser.scripting.insertCSS(
details
)
Parameters
-
details
-
An object describing the CSS to insert and where to insert it. It contains the following properties:
css Optional
-
string. A string containing the CSS to inject. Either css or files must be specified.
files Optional
-
array of string. The path of a CSS files to inject, relative to the extension's root directory. Either files or css must be specified.
origin Optional
-
string. The style origin for the injection, either USER or AUTHOR. Defaults to AUTHOR.
-
target
-
scripting.InjectionTarget. Details specifying the target to inject the CSS into.
Return value
A Promise that fulfills with no arguments when all the CSS is inserted. If any error occurs, the promise is rejected.
Examples
This example inserts CSS taken from a string into the active tab.
browser.action.onClicked.addListener(async (tab) => {
try {
await browser.scripting.insertCSS({
target: {
tabId: tab.id,
},
css: `body { border: 20px dotted pink; }`,
});
} catch (err) {
console.error(`failed to insert CSS: ${err}`);
}
});
This example inserts CSS loaded from a file (packaged with the extension) called "content-style.css":
browser.action.onClicked.addListener(async (tab) => {
try {
await browser.scripting.insertCSS({
target: {
tabId: tab.id,
},
files: ["content-style.css"],
});
} catch (err) {
console.error(`failed to insert CSS: ${err}`);
}
});
Browser compatibility
|
Desktop |
Mobile |
|
Chrome |
Edge |
Firefox |
Internet Explorer |
Opera |
Safari |
WebView Android |
Chrome Android |
Firefox for Android |
Opera Android |
Safari on IOS |
Samsung Internet |
insertCSS |
88 |
88 |
102 |
? |
74 |
15.4 |
? |
? |
102 |
? |
15.4 |
? |
origin |
88 |
88 |
102 |
? |
74 |
No |
? |
? |
102 |
? |
No |
? |