跳到主要内容

scripting 内容脚本

官方文档

动态管理网页内容,例如注入脚本、样式表、执行脚本等

权限设置

"permissions": [
"scripting"
],

方法

getRegisteredContentScripts() 获取已注册的内容脚本

type ContentScriptFilter = {
ids?: string[];
}

type RunAt = 'document_start' | 'document_end' | 'document_idle';

type ExecutionWorld = 'isolated_world' | 'shared_world';

type RegisteredContentScript = {
allFrames?: boolean;
css?: string[];
excludeMatches?: string[];
id: string;
js?: string[];
matchOriginAsFallback?: boolean;
matches?: string[];
persistAcrossSessions?: boolean;
runAt?: RunAt;
world?: ExecutionWorld;
}

chrome.scripting.getRegisteredContentScripts(
filter?: ContentScriptFilter
callback?: (scripts: RegisteredContentScript[]) => void,
)

registerContentScripts() 注册内容脚本

type RegisteredContentScript = {
allFrames?: boolean;
css?: string[];
excludeMatches?: string[];
id: string;
js?: string[];
matchOriginAsFallback?: boolean;
matches?: string[];
persistAcrossSessions?: boolean;
runAt?: RunAt;
world?: ExecutionWorld;
}

chrome.scripting.registerContentScripts(
scripts: RegisteredContentScript[],
callback?: () => void,
)

executeScript() 注入脚本

type InjectionTarget = {
// 要注入到的选项卡的 ID。
tabId: number;
// 要注入到的特定帧的 ID。
frameIds?: number[];
// 脚本是否应注入到选项卡内的所有帧中。默认值为 false。如果 frameIds 指定,则不能为真。
allFrames?: boolean;
// 要注入到的特定 documentId 的 ID。如果 frameIds 已设置,则不得设置此项。
documentIds?: string[];
}

type ScriptInjection = {
// 要引入所提供函数的参数。仅当指定了参数 func 时,这才有效。这些参数必须是 JSON 可序列化的。
args?: any[];
// 要注入的 JS 或 CSS 文件的路径,相对于扩展的根目录
files?: string[];
// 立即注入
injectImmediately?: boolean;
target: InjectionTarget;
// 隔离环境 / 与宿主页面的 JavaScript 共享的执行环境
world?: "ISOLATED" | "MAIN";
func?: () => void;
}

chrome.scripting.executeScript(
injection: ScriptInjection,
callback?: () => void,
)

insertCSS() 注入样式表

type InjectionTarget = {
// 要注入到的选项卡的 ID。
tabId: number;
// 要注入到的特定帧的 ID。
frameIds?: number[];
// 脚本是否应注入到选项卡内的所有帧中。默认值为 false。如果 frameIds 指定,则不能为真。
allFrames?: boolean;
// 要注入到的特定 documentId 的 ID。如果 frameIds 已设置,则不得设置此项。
documentIds?: string[];
}

type CSSInjection = {
// 必须指定 files 和 css 之一
css?: string;
// 必须指定 files 和 css 之一
files?: string[];
origin?: "USER" | "AUTHOR";
target: InjectionTarget;
}

chrome.scripting.insertCSS(
injection: CSSInjection,
callback?: () => void,
)

updateContentScript() 更新内容脚本

type RegisteredContentScript = {
allFrames?: boolean;
css?: string[];
excludeMatches?: string[];
id: string;
js?: string[];
matchOriginAsFallback?: boolean;
matches?: string[];
persistAcrossSessions?: boolean;
runAt?: RunAt;
world?: ExecutionWorld;
}

chrome.scripting.updateContentScript(
scripts: RegisteredContentScript[],
callback?: () => void,
)

unregisterContentScripts() 注销内容脚本

chrome.scripting.unregisterContentScripts(
filter?: ContentScriptFilter,
callback?: function,
)

removeCSS() 移除样式表

chrome.scripting.removeCSS(
injection: CSSInjection,
callback?: function,
)