scripting

Inserts JavaScript and CSS into websites. This API offers two approaches to inserting content:

Note: Chrome restricts this API to Manifest V3. Firefox and Safari support this API in Manifest V2 and V3.

This API requires the "scripting" permission and host permission for the target in the tab into which JavaScript or CSS is injected.

Alternatively, you can get permission temporarily in the active tab and only in response to an explicit user action, by asking for the "activeTab" permission. However, the "scripting" permission is still required.

Types

scripting.ContentScriptFilter

Specifies the IDs of scripts to retrieve with scripting.getRegisteredContentScripts() or to unregister with scripting.unregisterContentScripts().

scripting.ExecutionWorld

Specifies the execution environment of a script injected with scripting.executeScript() or registered with scripting.registerContentScripts().

scripting.InjectionTarget

Details of an injection target.

scripting.RegisteredContentScript

Details of a content script to be registered or that is registered.

Functions

scripting.executeScript()

Injects JavaScript code into a page.

scripting.getRegisteredContentScripts()

Gets a list of registered content scripts.

scripting.insertCSS()

Injects CSS into a page.

scripting.registerContentScripts()

Registers a content script for future page loads.

scripting.removeCSS()

Removes CSS which was previously injected into a page by a scripting.insertCSS() call.

scripting.updateContentScripts()

Updates one or more content scripts already registered.

scripting.unregisterContentScripts()

Unregisters one or more content scripts.

Browser compatibility

Report problems with this compatibility data on GitHub
desktopmobile
Chrome
Edge
Firefox
Opera
Safari
Firefox for Android
Safari on iOS
scripting
ExecutionWorld
ExecutionWorld.ISOLATED
ExecutionWorld.MAIN
InjectionTarget
RegisteredContentScript
RegisteredContentScript.matchOriginAsFallback
RegisteredContentScript.persistAcrossSessions
RegisteredContentScript.world
executeScript
executeScript.InjectionResult
InjectionResult.error
InjectionResult.frameId
InjectionResult.result
executeScript.injectImmediately
executeScript.world
world.ISOLATED
world.MAIN
getRegisteredContentScripts
insertCSS
insertCSS.origin
registerContentScripts
removeCSS
removeCSS.origin
unregisterContentScripts
updateContentScripts

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
No support
No support
See implementation notes.

Note: This API is based on Chromium's chrome.scripting API.