permissions

允許擴充套件在安裝後執行時請求額外的許可權。

擴充套件需要許可權才能訪問更強大的 WebExtension API。它們可以在安裝時請求許可權,方法是將所需的許可權包含在 permissions manifest.json 鍵中。在安裝時請求許可權的主要優點是:

  • 使用者只需被詢問一次,對他們來說干擾更少,決策也更簡單。
  • 擴充套件可以依賴於對其所需 API 的訪問,因為如果已經執行,許可權已被授予。

在大多數主流瀏覽器中,使用者可以透過瀏覽器的擴充套件管理器檢視其已安裝的擴充套件是否請求了高階許可權。

使用 permissions API,擴充套件可以在執行時請求其他許可權。這些許可權需要列在 optional_permissions manifest.json 鍵中。請注意,某些許可權不允許在 optional_permissions 中。這樣做的主要優點是:

  • 擴充套件可以在許可權集較小的情況下執行,除非實際需要。
  • 擴充套件可以以一種優雅的方式處理許可權拒絕,而不是在安裝時向用戶呈現一個全域性的“全有或全無”的選擇。例如,即使不授予訪問您位置的許可權,您仍然可以從地圖擴充套件中獲得很多功能。
  • 擴充套件可能需要 host permissions,但在安裝時可能不知道需要哪些 host permissions。例如,主機列表可能是使用者設定。在這種情況下,在執行時請求更具體的主機範圍,可以作為在安裝時請求 "<all_urls>" 的替代方案。

要使用 permissions API,請決定您的擴充套件可以在執行時請求哪些許可權,並將它們列在 optional_permissions 中。之後,您可以請求已包含在 optional_permissions 中的任何許可權。請求只能在使用者操作的處理程式中進行(例如,點選處理程式)。

從 Firefox 84 開始,使用者將能夠從附加元件管理器管理已安裝擴充套件的可選許可權。使用可選許可權的擴充套件應監聽 browser.permissions.onAddedbrowser.permissions.onRemoved API 事件,以瞭解使用者何時授予或撤銷這些許可權。

有關設計執行時許可權請求的建議,以最大化使用者授予許可權的可能性,請參閱 在執行時請求許可權

型別

permissions.Permissions

表示一組許可權。

方法

permissions.contains()

發現擴充套件已授予的許可權集。

permissions.getAll()

獲取此擴充套件當前擁有的所有許可權。

permissions.remove()

放棄一組許可權。

permissions.request()

請求一組許可權。

事件處理器

permissions.onAdded

當授予新許可權時觸發。

permissions.onRemoved

當移除許可權時觸發。

擴充套件程式示例

瀏覽器相容性

另見

注意:此 API 基於 Chromium 的 chrome.permissions API。