遷移至 Manifest V3 的已知問題

本頁面說明在轉換至資訊清單 V3 的過程中解決的平台落差,並回答常見的遷移問題。

解決平台落差

我們新增了下列功能,解決常見的遷移作業阻礙:

  1. 支援 ChromeOS 檔案處理,取代 chrome.fileBrowserHandler (Chrome 120)。
  2. 使用者指令碼支援:透過新的 userScripts API (Chrome 120) 註冊含有任意程式碼的內容指令碼。
  3. 針對耗時超過五分鐘的特定作業,提供額外的強效 Service Worker 存留時間
    • Chrome 116 版已在 permissions.request()desktopCapture.chooseDesktopMedia()identity.launchWebAuthFlow()management.uninstall() 中新增這項功能。
    • Chrome 118 版已為 chrome.debugger新增這項功能。
  4. 增加宣告式網路要求 (DNR) 的靜態和已啟用規則集數量。啟用靜態規則集從 10 個增加到 50 個,靜態規則集總數從 50 個增加到 100 個 (Chrome 120)。
  5. 擴充無畫面文件功能,支援更多使用無畫面文件的原因。Chrome 116 新增了 GEOLOCATION
  6. 改善 chrome.tabCapture API 的支援 (Chrome 116):
    • 支援從 Service Worker 呼叫 getMediaStreamId()
    • 支援從畫面外文件中的串流 ID 取得 MediaStream
  7. 延長 Service Worker 的生命週期,同時維持有效的 WebSocket 連線 (Chrome 116)。

Manifest V3 常見問題

問:我們是否計畫支援持續性 Service Worker?
答:從背景指令碼遷移至 Service Worker 的主要原因之一,是後者採用更節省記憶體的事件驅動程式設計模型,這是因為 Service Worker 的本質是暫時性的。因此,我們不打算支援持續性服務工作人員。不過,為了滿足擴充功能開發人員的特定需求,我們將持續改善 Service Worker。請特別注意以下幾點:

  • 所有擴充功能事件和 API 呼叫都會延長Service Worker 生命週期
  • 如果選取原生訊息傳遞等用途,擴充功能服務工作站的存續時間會超過 5 分鐘。

問:服務工作人員是否能存取 DOM?
答:我們遵循 Web Platform 的做法,不在網頁工作人員 (包括服務工作人員) 中加入 DOM 存取權。為支援需要從 Service Worker 存取背景 DOM 的用途,我們導入了將背景工作委派給短期 Offscreen 文件的可能性,這些文件提供完整的 DOM 存取權。

問:Manifest V3 是否會支援遠端程式碼?
答:為提升 Chrome 擴充功能的安全性,我們將持續禁止在 Chrome 擴充功能中執行任意遠端代管程式碼。不過,這代表我們禁止所有類型的動態程式碼執行作業。我們仍支援在 Chrome 擴充功能中動態執行程式碼的不同選項:

問:我的 Manifest V2 擴充功能依賴 webRequestBlocking,但 Manifest V3 不支援這項功能。如何繼續在 Manifest V3 中提供相同功能?
答:我們相信,大多數要求封鎖用途都能透過新的 declarativeNetRequest API 解決,而且還能避免處理序間通訊的效能負擔、在每個要求上執行程式碼,或在要求時需要啟用的擴充功能程序。不過,對於複雜的企業 (或教育) 用途,系統仍支援動態要求封鎖。

還有其他常見問題嗎?請告訴我們