API / wxt/utils/content-script-context / ContentScriptContext
Class: ContentScriptContext
Source: packages/wxt/src/utils/content-script-context.ts:43
Implements AbortController. Used to detect and stop content script code when the script is invalidated.
It also provides several utilities like ctx.setTimeout and ctx.setInterval that should be used in content scripts instead of window.setTimeout or window.setInterval.
To create context for testing, you can use the class's constructor:
import { ContentScriptContext } from 'wxt/utils/content-scripts-context';
test('storage listener should be removed when context is invalidated', () => {
const ctx = new ContentScriptContext('test');
const item = storage.defineItem('local:count', { defaultValue: 0 });
const watcher = vi.fn();
const unwatch = item.watch(watcher);
ctx.onInvalidated(unwatch); // Listen for invalidate here
await item.setValue(1);
expect(watcher).toBeCalledTimes(1);
expect(watcher).toBeCalledWith(1, 0);
ctx.notifyInvalidated(); // Use this function to invalidate the context
await item.setValue(2);
expect(watcher).toBeCalledTimes(1);
});Contents
Implements
AbortController
Constructors
Constructor
new ContentScriptContext(
contentScriptName,options?):ContentScriptContext
Source: packages/wxt/src/utils/content-script-context.ts:52
Parameters
contentScriptName
string
options?
Omit<ContentScriptDefinition, "main">
Returns
ContentScriptContext
Properties
options?
readonlyoptionaloptions?:Omit<ContentScriptDefinition,"main">
Source: packages/wxt/src/utils/content-script-context.ts:54
Accessors
isInvalid
Get Signature
get isInvalid():
boolean
Source: packages/wxt/src/utils/content-script-context.ts:71
Returns
boolean
isValid
Get Signature
get isValid():
boolean
Source: packages/wxt/src/utils/content-script-context.ts:78
Returns
boolean
signal
Get Signature
get signal():
AbortSignal
Source: packages/wxt/src/utils/content-script-context.ts:63
The signal read-only property of the AbortController interface returns an AbortSignal object instance, which can be used to communicate with/abort an asynchronous operation as desired.
Returns
AbortSignal
Implementation of
AbortController.signal
Methods
abort()
abort(
reason?):void
Source: packages/wxt/src/utils/content-script-context.ts:67
The abort() method of the AbortController interface aborts an asynchronous operation before it has completed. This is able to abort fetch requests, the consumption of any response bodies, or streams.
Parameters
reason?
any
Returns
void
Implementation of
AbortController.abort
addEventListener()
Call Signature
addEventListener<
TType>(target,type,handler,options?):void
Source: packages/wxt/src/utils/content-script-context.ts:203
Call target.addEventListener and remove the event listener when the context is invalidated.
Listeners can be canceled by calling the normal removeEventListener function.
Includes additional events useful for content scripts:
"wxt:locationchange"- Triggered when HTML5 history mode is used to change URL. Content scripts are not reloaded when navigating this way, so this can be used to reset the content script state on URL change, or run custom code.
Type Parameters
TType
TType extends keyof WxtWindowEventMap
Parameters
target
Window
type
TType
handler
(event) => void
options?
AddEventListenerOptions
Returns
void
Example
ctx.addEventListener(document, 'visibilitychange', () => {
// ...
});
ctx.addEventListener(window, 'wxt:locationchange', () => {
// ...
});Call Signature
addEventListener<
TType>(target,type,handler,options?):void
Source: packages/wxt/src/utils/content-script-context.ts:209
Call target.addEventListener and remove the event listener when the context is invalidated.
Listeners can be canceled by calling the normal removeEventListener function.
Includes additional events useful for content scripts:
"wxt:locationchange"- Triggered when HTML5 history mode is used to change URL. Content scripts are not reloaded when navigating this way, so this can be used to reset the content script state on URL change, or run custom code.
Type Parameters
TType
TType extends keyof DocumentEventMap
Parameters
target
Document
type
TType
handler
(event) => void
options?
AddEventListenerOptions
Returns
void
Example
ctx.addEventListener(document, 'visibilitychange', () => {
// ...
});
ctx.addEventListener(window, 'wxt:locationchange', () => {
// ...
});Call Signature
addEventListener<
TTarget>(target, ...params):void
Source: packages/wxt/src/utils/content-script-context.ts:215
Call target.addEventListener and remove the event listener when the context is invalidated.
Listeners can be canceled by calling the normal removeEventListener function.
Includes additional events useful for content scripts:
"wxt:locationchange"- Triggered when HTML5 history mode is used to change URL. Content scripts are not reloaded when navigating this way, so this can be used to reset the content script state on URL change, or run custom code.
Type Parameters
TTarget
TTarget extends EventTarget
Parameters
target
TTarget
params
...Parameters<TTarget["addEventListener"]>
Returns
void
Example
ctx.addEventListener(document, 'visibilitychange', () => {
// ...
});
ctx.addEventListener(window, 'wxt:locationchange', () => {
// ...
});block()
block<
T>():Promise<T>
Source: packages/wxt/src/utils/content-script-context.ts:112
Return a promise that never resolves. Useful if you have an async function that shouldn't run after the context is expired.
Type Parameters
T
T
Returns
Promise<T>
Example
const getValueFromStorage = async () => {
if (ctx.isInvalid) return ctx.block();
// ...
};listenForNewerScripts()
listenForNewerScripts():
void
Source: packages/wxt/src/utils/content-script-context.ts:283
Returns
void
notifyInvalidated()
notifyInvalidated():
void
Source: packages/wxt/src/utils/content-script-context.ts:244
Internal
Abort the abort controller and execute all onInvalidated listeners.
Returns
void
onInvalidated()
onInvalidated(
cb): () =>void
Source: packages/wxt/src/utils/content-script-context.ts:96
Add a listener that is called when the content script's context is invalidated.
Parameters
cb
() => void
Returns
A function to remove the listener.
() => void
Example
browser.runtime.onMessage.addListener(cb);
const removeInvalidatedListener = ctx.onInvalidated(() => {
browser.runtime.onMessage.removeListener(cb);
});
// ...
removeInvalidatedListener();requestAnimationFrame()
requestAnimationFrame(
callback):number
Source: packages/wxt/src/utils/content-script-context.ts:153
Wrapper around window.requestAnimationFrame that automatically cancels the request when invalidated.
Callbacks can be canceled by calling the normal cancelAnimationFrame function.
Parameters
callback
FrameRequestCallback
Returns
number
requestIdleCallback()
requestIdleCallback(
callback,options?):number
Source: packages/wxt/src/utils/content-script-context.ts:169
Wrapper around window.requestIdleCallback that automatically cancels the request when invalidated.
Callbacks can be canceled by calling the normal cancelIdleCallback function.
Parameters
callback
IdleRequestCallback
options?
IdleRequestOptions
Returns
number
setInterval()
setInterval(
handler,timeout?):number
Source: packages/wxt/src/utils/content-script-context.ts:124
Wrapper around window.setInterval that automatically clears the interval when invalidated.
Intervals can be cleared by calling the normal clearInterval function.
Parameters
handler
() => void
timeout?
number
Returns
number
setTimeout()
setTimeout(
handler,timeout?):number
Source: packages/wxt/src/utils/content-script-context.ts:138
Wrapper around window.setTimeout that automatically clears the interval when invalidated.
Timeouts can be cleared by calling the normal setTimeout function.
Parameters
handler
() => void
timeout?
number
Returns
number
stopOldScripts()
stopOldScripts():
void
Source: packages/wxt/src/utils/content-script-context.ts:251
Returns
void
verifyScriptStartedEvent()
verifyScriptStartedEvent(
event):boolean
Source: packages/wxt/src/utils/content-script-context.ts:275
Parameters
event
CustomEvent
Returns
boolean
Generated using typedoc-plugin-markdown and TypeDoc