ScriptingPort
ScriptingPort programmatically injects scripts into browser tabs at runtime, replacing the legacy executeScript approach with the MV3-compliant scripting API.
Context
- Availability: Background
- Source:
packages/ports/src/background/scripting/scripting.port.ts
Key Methods
executeScript(options: ScriptingExecuteOptions): Promise<void>- Inject script files into a target tab.
Usage
import { ScriptingPort } from '@hexajs-dev/ports';
import { Injectable, HexaContext } from '@hexajs-dev/common';
@Injectable({ context: HexaContext.Background })
export class ContentInjectorService {
constructor(private readonly scripting: ScriptingPort) {}
async injectIntoTab(tabId: number) {
await this.scripting.executeScript({
target: { tabId, allFrames: false },
files: ['content/injected.js'],
});
}
}
API Reference Appendix
Below is the exhaustive, auto-generated technical reference for all types, interfaces, and signatures associated with this API.
Classes
ScriptingPort
import { ScriptingPort } from '@hexajs-dev/ports';
class ScriptingPort { ... }
Methods
executeScript()
executeScript(options: ScriptingExecuteOptions): Promise<void>
Types & Interfaces
ScriptingExecuteOptions
import { ScriptingExecuteOptions } from '@hexajs-dev/ports';
interface ScriptingExecuteOptions {
target: {
tabId: number;
allFrames?: boolean;
};
files: string[];
}