我們開始測試新的擴充功能選單,請準備好擴充功能

發布日期:2024 年 11 月 19 日

在 2024 年 Google I/O 大會上,我們分享了擴充功能選單即將進行的初步設計,讓使用者能進一步控管擴充功能可存取的網站。我們很快就會開始測試這些異動,首先會在 Canary 中向少數使用者推出,希望日後能更廣泛地推行。

在過去與開發人員討論這項異動時,我們經常聽到他們對變更擴充功能在安裝時要求主機權限的方式可能造成的影響感到疑慮。新選單不會影響任何預設行為。擴充功能會繼續在安裝時獲得所有要求的代管主機存取權。這些異動旨在讓使用者更容易找到現有的控制選項。

本文將概略說明預期結果,以及如何使用新 API 準備擴充功能,以便處理使用者拒絕提供網頁存取權的情況。

異動內容

為了讓使用者進一步控管,我們將推出新的擴充功能選單。在安裝時,系統會繼續授予擴充功能存取所有要求的主機的權限,但使用者現在可以更輕鬆地控管每個擴充功能的存取權。

新擴充功能選單的設計草稿
新擴充功能選單的設計草稿

新的選單 (圖片顯示目前的設計,但可能會變更) 會更清楚顯示哪些擴充功能可在網頁上執行,並讓使用者變更存取權限 (如果有選取的話)。使用者也可以禁止所有擴充功能在特定網站上執行。如前所述,我們不會變更任何可用的設定或預設值,而是專注於讓使用者更容易發現現有功能。

新增網站存取要求

我們已設計新的 API 來配合這些變更,並從 WebExtensions 社群群組的其他瀏覽器和開發人員取得重要意見回饋。

如果使用者拒絕存取網頁,擴充功能現在可以使用新的 permissions.addSiteAccessRequest API 要求存取權。當擴充功能執行這項操作時,使用者會在工具列中看到「允許」訊息,以及擴充功能拼圖片段。以下是我們正在研究的設計:

來自 example.com 的網站存取要求
example.com 的網站存取權要求

當使用者在擴充功能選單中按一下「允許」時,擴充功能就會獲得主機的持續存取權。使用者日後可以透過擴充功能選單或 chrome://extensions 頁面再次拒絕。只要在工具列中按一下「允許 1?」,即可立即授予存取權。

擴充功能可以使用 tabId 呼叫 permissions.addSiteAccessRequest,以便顯示該分頁的權限要求。您可以使用功能偵測功能,立即開始在擴充功能中安全地使用這項功能。對於沒有新選單的使用者,API 不會執行任何操作,但採用 API 可讓使用者在逐步推出新選單時受惠。

chrome.tabs.onUpdated.addListener(async (tabId, changes) => {
  if (typeof changes.url !== 'string') return;

  const url = new URL(changes.url);

  // If we are on the /checkout page of example.com.
  if (url.origin === 'https://example.com' && url.pathname === '/checkout') {
    const hasPermission = await chrome.permissions.contains({
      origins: ['https://example.com/*']
    });

    // We already have host permissions.
    if (hasPermission) {
      return;
    }

    // Add a site access request if the API is available.
    if (chrome.permissions.addSiteAccessRequest) {
      chrome.permissions.addSiteAccessRequest({ tabId });
    }
  }
});

在這個範例中,只有在使用者位於 /checkout 頁面時,才會新增要求。您可以在 chrome-extensions-samples 存放區中查看完整程式碼

擴充功能應謹慎考量何時要求使用者授予存取權。使用者更有可能忽略雜訊要求,而 Chrome 可能會限制過多的請求。使用者也可以選擇關閉擴充功能顯示要求的功能。因此,您應只在使用者極有可能與擴充功能互動時,才要求存取權。

要求會繫結至特定分頁,並在使用者前往其他來源時自動清除。您可以使用對應的 removeSiteAccessRequest 方法明確清除要求 (例如,如果要求已繫結至特定路徑)。

由於這個 API 與新的擴充功能選單連結,如果未啟用新選單,系統會忽略呼叫。不過,我們建議您今天就試試這個 API,並考慮在擴充功能中採用。隨著更多使用者逐步看到新的選單變更,您就能提供優質的使用者體驗。

如要進一步瞭解如何使用選用權限,請參閱權限說明文件

立即試用

在 Chrome 133.0.6838.0 以上版本 (目前在 Chrome Canary 中),這個 API 預設為啟用。如要啟用新選單,請在 chrome://flags 中啟用「Extensions Menu Access Control」旗標。

提醒你,這項功能仍在開發中,可能會持續改進和調整。建議您在 Chrome Canary 中進行測試,以便體驗最新功能。

您可以在 chromium-extensions 聯絡清單中,針對新設計提供意見回饋,我們會在繼續開發新選單時參考這些意見。