userScripts
使用此 API 註冊使用者指令碼,這些使用者指令碼是用於操作網頁或提供新功能的第三方指令碼。註冊使用者指令碼會指示瀏覽器將指令碼附加到在註冊期間指定的 URL 模式匹配的頁面。
注意:這是新 API 版本的文件,在 Firefox 中適用於 Manifest V3。有關在 Firefox 中使用 Manifest V2 的 API 資訊,請參閱 userScripts (舊版)。
此 API 提供了與 scripting 類似的功能,但增加了適合處理第三方指令碼的功能。
Permissions
要使用此 API,您需要 `userScripts` 許可權以及您希望執行指令碼的網站的 host_permissions。但是,啟用此 API 的方法在不同瀏覽器之間有所不同。
- 在 Firefox 中,`userScripts` 是在 `optional_permissions` manifest 鍵中宣告的 僅可選許可權。您的擴充套件必須透過檢查 `userScripts` API 名稱空間的可用性或使用
permissions.contains()來檢查許可權是否已授予,如果未授予,則使用permissions.request()請求它。 - 在 Chrome 中,`userScripts` 是在
permissionsmanifest 鍵中宣告的安裝時請求的許可權。但是,要啟用 API 的使用,使用者必須 在 Chrome 中開啟開發者模式。
執行環境
當用戶指令碼被註冊或更新時(使用 userScripts.register() 或 userScripts.update()),您的擴充套件可以將其設定為在隔離的 `USER_SCRIPT` 環境或 `MAIN` 環境中執行。
`USER_SCRIPT` 環境提供了一個隔離的執行環境,主機頁面或其他擴充套件無法訪問。這種隔離類似於 內容指令碼環境,只是 `USER_SCRIPT` 環境無法訪問擴充套件 API。
使用者指令碼可以透過設定 RegisteredUserScript 的 `worldId` 屬性來共享 `USER_SCRIPT` 環境,或將其自身隔離在 `USER_SCRIPT` 環境中。該 API 使擴充套件能夠使用 userScripts.configureWorld() 為 `USER_SCRIPT` 環境配置內容安全策略 (CSP)。
在 `MAIN` 環境中,主機頁面和其他擴充套件可以看到並訪問正在執行的使用者指令碼。`worldId` 屬性不適用於 `MAIN` 環境。
這些執行環境值定義在 ExecutionWorld 中。
訊息
像內容指令碼和其他擴充套件指令碼一樣,使用者指令碼使用訊息與擴充套件的其他部分進行通訊,使用 runtime.sendMessage() 和 runtime.connect()。但是,擴充套件使用專用的 runtime.onUserScriptMessage 和 runtime.onUserScriptConnect 來接收訊息。使用專用處理程式是因為它們更容易識別來自使用者指令碼的訊息,而使用者指令碼是信任度較低的上下文。
要啟用訊息傳遞 API,請在註冊使用者指令碼之前,使用 `messaging` 引數設定為 `true` 呼叫 userScripts.configureWorld()。
browser.userScripts.configureWorld({
messaging: true,
});
擴充套件更新
當擴充套件更新時,使用者指令碼會被清除。要恢復指令碼,請在擴充套件的 runtime.onInstalled 事件處理程式中新增響應 `"update"` 原因的程式碼。
型別
userScripts.ExecutionWorld-
使用
userScripts.register()或userScripts.update()注入指令碼的執行環境。 userScripts.RegisteredUserScript-
由
getScripts()返回的 `object`,表示已註冊的使用者指令碼,並用作register()和update()的輸入。 userScripts.ScriptSource-
使用者指令碼的程式碼或檔案源。
userScripts.UserScriptFilter-
由
userScripts.getScripts()或userScripts.unregister()處理的使用者指令碼列表。 userScripts.WorldProperties-
`USER_SCRIPT` 執行環境的配置。
方法
userScripts.configureWorld()-
為擴充套件配置 `USER_SCRIPT` 執行環境。
userScripts.getScripts()-
返回擴充套件註冊的使用者指令碼。
userScripts.getWorldConfigurations()-
返回擴充套件註冊的所有環境配置。
userScripts.register()-
為擴充套件註冊使用者指令碼。
userScripts.resetWorldConfiguration()-
重置擴充套件註冊的 `USER_SCRIPT` 環境的配置。
userScripts.unregister()-
取消註冊擴充套件註冊的使用者指令碼。
userScripts.update()-
更新擴充套件註冊的使用者指令碼。
userScripts.execute()-
將使用者指令碼注入目標上下文。
擴充套件程式示例
瀏覽器相容性
載入中…