userScripts.register() (已棄用)

警告:這是已棄用的 userScripts API 的文件。它在 Manifest V2 的 Firefox 中可用。有關在 Manifest V3 中支援使用者指令碼的功能,請參閱新的 userScripts API。

此方法允許從擴充套件的頁面(例如後臺頁面)註冊使用者指令碼。

此方法與 contentScripts.register() API 方法非常相似(例如,它們都返回一個 Promise,該 Promise 解析為一個 API 物件,其中包含一個用於登出指令碼的 unregister() 方法)。但是,它們支援的選項有所不同。

這是一個非同步方法,它返回一個 Promise

語法

js
const registeredUserScript = await browser.userScripts.register(
  userScriptOptions       // object
);
// …
await registeredUserScript.unregister();

引數

userScriptOptions

object。表示要註冊的使用者指令碼。其語法與 contentScripts.register() 類似。

UserScriptOptions 物件具有以下屬性

scriptMetadata 可選

一個 JSON 物件,其中包含與已註冊的使用者指令碼關聯的任意元資料屬性。但是,儘管是任意的,但物件必須是可序列化的,因此它與 結構化克隆演算法相容。此元資料用於將詳細資訊從指令碼傳遞到 API 指令碼。例如,提供需要由 API 指令碼注入的 API 子集的詳細資訊。API 不使用此元資料。

allFrames 可選

content_scripts 鍵中的 all_frames 相同。

cookieStoreId 可選

一個 cookie 儲存 ID 字串陣列或一個包含 cookie 儲存 ID 的字串。將使用者指令碼註冊到屬於這些 cookie 儲存 ID 的標籤頁。這使得指令碼可以註冊到所有預設或非上下文身份的標籤頁、私密瀏覽標籤頁(如果 擴充套件程式已在私密瀏覽中啟用)、上下文身份的標籤頁,或這些的組合。

excludeGlobs 可選

content_scripts 鍵中的 exclude_globs 相同。

excludeMatches 可選

content_scripts 鍵中的 exclude_matches 相同。

includeGlobs 可選

content_scripts 鍵中的 include_globs 相同。

js

物件陣列。每個物件都有一個名為 file 的屬性,該屬性是相對於擴充套件程式 manifest.json 的 URL,指向要註冊的 JavaScript 檔案,或者有一個名為 code 的屬性,其中包含要註冊的 JavaScript 程式碼。

matchAboutBlank 可選

content_scripts 鍵中的 match_about_blank 相同。

matches

content_scripts 鍵中的 matches 相同。matches 中提供的 URL 模式必須由 manifest permission 屬性中定義的宿主許可權啟用,或由使用者從 optional_permissions 列表中啟用。例如,如果 matches 包含 https://mozilla.org/a,則僅當宿主許可權包含(例如)https://mozilla.org/* 時,才會註冊指令碼。如果 URL 模式未啟用,則註冊呼叫將因錯誤“Permission denied to register a user script for ORIGIN”而失敗。

runAt 可選

content_scripts 鍵中的 run_at 相同。

與內容指令碼選項不同,userScriptOptions 物件沒有 CSS 屬性。請使用 contentScripts.register() 來動態註冊和登出樣式表。

返回值

一個 Promise,它將使用一個 RegisteredUserScript 物件進行填充,該物件用於登出使用者指令碼。

注意:當相關的擴充套件頁面(註冊使用者指令碼的頁面)解除安裝時,使用者指令碼將被登出。因此,您應該從一個持續時間至少與您希望使用者指令碼保持註冊的時間一樣長的擴充套件頁面註冊使用者指令碼。

瀏覽器相容性

另見