Skip to main content

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[];
}