contentScripts.register()
使用此函式來註冊一個或多個內容指令碼。
它接受一個引數,該引數是一個物件,其屬性與 content_scripts manifest 鍵中提供的物件相似(但請注意,content_scripts 是一個物件陣列,而 register() 的引數是一個物件)。
擴充套件必須具有 contentScriptOptions 中模式的適當 主機許可權,否則 API 呼叫將被拒絕。
語法
let registering = browser.contentScripts.register(
contentScriptOptions // object
)
引數
contentScriptOptions-
object。一個RegisteredContentScriptOptions物件,表示要註冊的內容指令碼。其語法與content_scriptsmanifest 鍵陣列中的物件相似。區別在於:- 屬性名使用 駝峰式命名,而不是下劃線(蛇形命名)— 例如,
excludeMatches,而不是exclude_matches。 js和css屬性允許你註冊字串以及 URL,因此它們的語法必須區分這些型別。
RegisteredContentScriptOptions物件具有以下屬性:allFrames可選-
與
content_scripts鍵中的all_frames相同。 -
一個字串或字串陣列。在屬於一個或多個 cookie 儲存 ID 的標籤頁中註冊內容指令碼。這使得指令碼可以為所有預設或非情境身份標籤頁、私密瀏覽標籤頁(如果 擴充套件在私密瀏覽中啟用)、情境身份 的標籤頁,或這些的組合進行註冊。有關更多資訊,請參閱 處理情境身份。
css可選-
一個物件陣列。每個物件都有一個名為
file的屬性,該屬性是一個以擴充套件的 manifest.json 開始並指向要註冊的 CSS 檔案的 URL,或者有一個名為code的屬性,該屬性是要註冊的 CSS 程式碼。 cssOrigin可選-
string。注入樣式的來源,可以是"user",將 CSS 新增為使用者樣式表,或者"author",將其新增為作者樣式表。預設為"author"。此屬性不區分大小寫。 excludeGlobs可選-
與
content_scripts鍵中的exclude_globs相同。 excludeMatches可選-
與
content_scripts鍵中的exclude_matches相同。 includeGlobs可選-
與
content_scripts鍵中的include_globs相同。 js可選-
一個物件陣列。每個物件都有一個名為
file的屬性,該屬性是一個以擴充套件的 manifest.json 開始並指向要註冊的 JavaScript 檔案的 URL,或者有一個名為code的屬性,該屬性是要註冊的 JavaScript 程式碼。 matchAboutBlank可選-
與
content_scripts鍵中的match_about_blank相同。 matchOriginAsFallback可選-
與
content_scripts鍵中的match_origin_as_fallback相同。 matches-
與
content_scripts鍵中的matches相同。 runAt可選-
與
content_scripts鍵中的run_at相同。 world可選-
指令碼執行的環境。與
content_scripts鍵中的world相同。
- 屬性名使用 駝峰式命名,而不是下劃線(蛇形命名)— 例如,
返回值
一個 Promise,它將用一個 contentScripts.RegisteredContentScript 物件fulfilled,你可以使用該物件來取消註冊內容指令碼。
目前,當相關的擴充套件頁面(從中註冊了內容指令碼)解除安裝時,內容指令碼就會被取消註冊,因此你應該從一個持續時間至少與你希望內容指令碼保持註冊狀態一樣長的擴充套件頁面註冊內容指令碼。
示例
此示例為所有 .org URL 註冊了 defaultCode 內容指令碼。
const defaultHosts = "*://*.org/*";
const defaultCode =
"document.body.innerHTML = '<h1>This page has been eaten<h1>'";
async function register(hosts, code) {
return await browser.contentScripts.register({
matches: [hosts],
js: [{ code }],
runAt: "document_idle",
});
}
let registered = register(defaultHosts, defaultCode);
此程式碼註冊了 content_scripts/example.js 檔案。
const scriptObj = await browser.contentScripts.register({
js: [{ file: "/content_scripts/example.js" }],
matches: ["<all_urls>"],
allFrames: true,
runAt: "document_start",
});
擴充套件程式示例
瀏覽器相容性
載入中…