本頁面說明在轉換至資訊清單 V3 的過程中解決的平台落差,並回答常見的遷移問題。
解決平台落差
我們新增了下列功能,解決常見的遷移作業阻礙:
- 支援 ChromeOS 檔案處理,取代
chrome.fileBrowserHandler(Chrome 120)。 - 使用者指令碼支援:透過新的 userScripts API (Chrome 120) 註冊含有任意程式碼的內容指令碼。
- 針對耗時超過五分鐘的特定作業,提供額外的強效 Service Worker 存留時間。
- Chrome 116 版已在
permissions.request()、desktopCapture.chooseDesktopMedia()、identity.launchWebAuthFlow()和management.uninstall()中新增這項功能。 - Chrome 118 版已為
chrome.debugger新增這項功能。
- Chrome 116 版已在
- 增加宣告式網路要求 (DNR) 的靜態和已啟用規則集數量。啟用靜態規則集從 10 個增加到 50 個,靜態規則集總數從 50 個增加到 100 個 (Chrome 120)。
- 擴充無畫面文件功能,支援更多使用無畫面文件的原因。Chrome 116 新增了
GEOLOCATION。 - 改善
chrome.tabCaptureAPI 的支援 (Chrome 116):- 支援從 Service Worker 呼叫
getMediaStreamId()。 - 支援從畫面外文件中的串流 ID 取得
MediaStream。
- 支援從 Service Worker 呼叫
- 延長 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 擴充功能中動態執行程式碼的不同選項:
- 支援開發人員工具擴充功能中的
eval() - 支援使用者指令碼。
- 在沙箱化 iframe 中執行遠端託管的程式碼
- 遠端代管的設定檔,可在擴充功能套件中於執行階段解讀。不過,您必須預先決定可能的執行路徑。
問:我的 Manifest V2 擴充功能依賴 webRequestBlocking,但 Manifest V3 不支援這項功能。如何繼續在 Manifest V3 中提供相同功能?
答:我們相信,大多數要求封鎖用途都能透過新的 declarativeNetRequest API 解決,而且還能避免處理序間通訊的效能負擔、在每個要求上執行程式碼,或在要求時需要啟用的擴充功能程序。不過,對於複雜的企業 (或教育) 用途,系統仍支援動態要求封鎖。
還有其他常見問題嗎?請告訴我們。