到目前為止,Chrome 擴充功能在 2023 年有許多新進展。我們十分重視您的寶貴意見,並依此改善擴充功能平台和相關文件。我們也持續與 WebExtensions Community Group 中的其他瀏覽器供應商合作,讓擴充功能 API 在各瀏覽器中運作得更一致。
在這篇文章中,我們將向您介紹 Chrome 擴充功能團隊在今年上半年所做的幾項異動,以及本季稍晚即將推出的功能。立即開始!
新的擴充功能 API 和功能
在本節中,我想強調一些重要的 API 推出作業、簡要介紹其他 API 改善項目,並分享即將推出的 API 版本。
特色
螢幕外文件
Offscreen API 已在 Chrome 109 推出。這可讓 Manifest V3 擴充功能處理需要與 DOM 或視窗互動的用途,而這類用途無法在擴充功能服務工作程執行。此外,Chrome 114 還引進了兩個額外的非畫面原因:'WORKERS'
用於文件需要產生 worker 的情況,以及 'LOCAL_STORAGE'
用於協助將資料從 window.localStorage
遷移至 chrome.storage
API。
自 Chrome 115 起,您可以在建立離螢幕文件時提供多個原因。這樣一來,您就能在同一份文件中執行兩項相關工作。
全新側邊面板 API 🎉?
過去,在擴充功能中建立側欄的唯一方法,就是在每個網頁上注入含有內容指令碼的新元素。Chrome 114 推出了 Side Panel API。您現在可以以更簡單的方式,為使用者開發輔助側欄體驗。進一步瞭解Side Panel API 如何協助您設計出更優質的使用者體驗。
更強大的 Service Worker
所有擴充功能事件現在都會重新啟動擴充功能服務 worker 的閒置計時器。在 Chrome 110 中,擴充功能服務 worker 的生命週期上限已從五分鐘移除。此外,傳送至原生應用程式和擴充功能內訊息的訊息,也會重新啟動閒置計時器。如要進一步瞭解,請參閱「擴充功能服務工作者生命週期」一文。
更多 API 發布
- Action API:自 Chrome 110 起,您可以使用
setBadgeTextColor
() 和getBadgeTextColor()
自訂徽章文字。此外,您也可以使用isEnabled()
檢查目前分頁是否已啟用動作。 - 指令 API:Chrome 111 修正了在轉換為 MV3 時,在
"commands._execute_action"
下方資訊清單中宣告的擴充功能捷徑不會保留的錯誤。 - Downloads API:Chrome 中的預設下載 UI 已從底部的層架移至萬用途工具列的右側。如要停用這項行為,您可以使用
downloads.setUiOptions()
取代setShelfEnabled()
。 - History API:
chrome.history.getVisits()
和chrome.history.search()
也會傳回已同步至本機記錄資料庫的其他裝置資料。這可能會導致歷史記錄項目和造訪次數增加。isLocal
已在 Chrome 115 中加入VisitItem
(預計於本月稍晚推出穩定版),以便只篩選本地造訪。 - Identity API:驗證視窗現在會以彈出式視窗顯示,而不會佔用整個應用程式視窗。為在 JavaScript 重新導向期間提供更多控制選項,我們新增了
abortOnLoadForNonInteractive
和timeoutMsForNonInteractive
兩個選項。 - Storage API:在 Chrome 112 中,
chrome.session
儲存空間大小已增加至 10 MB。接著,我們在 Chrome 114 中將chrome.local
的儲存空間大小調整為一致。
即將推出...
日後的 Chrome 版本將推出許多功能,讓擴充功能更容易遷移至 Manifest V3。如需即將實施的 MV3 遷移相關異動清單,請參閱已知問題頁面。此外,我們也預計新增下列功能:
- DeclarativeNetRequest API:isUrlFilterCaseSensitive 屬性的預設值將變更為
false
。請參閱 WECG 討論串。 - File Handling API 可讓 ChromeOS 擴充功能開啟具有指定 MIME 類型和副檔名的檔案。這項功能目前處於標記後測試階段。
- Runtime API:我們將發布
runtime.getContexts()
取代已淘汰的extension.getViews()
。這樣一來,擴充功能就能判斷是否已開啟側邊面板或畫面外文件等擴充功能頁面。請參閱 WECG 提案。 - 服務工作者:我們會在顯示使用者提示的 Chrome API 中加入強制保活功能:
permissions.request()
、desktopCapture.chooseDesktopMedia()
、identity.launchWebAuthFlow()
和management.uninstall()
。 - 側邊面板 API:我們推出
sidepanel.open()
,可透過程式設計開啟擴充功能側邊面板,以回應使用者手勢,例如點選內容功能表。 - TabCapture API:我們新增了從擴充功能服務 worker 呼叫
getMediaStreamId()
的功能,並從畫面外文件中的串流 ID 取得 MediaStream。如需範例,請參閱「錄音和螢幕截圖」。
請密切留意「擴充功能的新功能」頁面,隨時掌握 Chrome Beta 版的最新消息。
說明文件升級和更多 Manifest V3 指南
我們也一直致力於改善開發人員的學習體驗。感謝所有在 chromium-group 上提問,以及在 developer.chrome.com 上回報說明文件問題的使用者。
特色
- 新的「MV3 遷移」專區提供實用的方法,可將 Manifest V2 擴充功能轉換為 Manifest V3。
- 擴充功能 Service Worker 指南提供擴充功能 Service Worker 主題的詳細資訊。包括註冊和更新方式、生命週期、匯入方式等等。
- 使用 Service Worker 處理事件教學課程會介紹擴充功能 Service Worker 的基本概念。這個擴充功能會建立網址列擴充功能,讓您快速存取擴充功能 API 參考頁面。
更多最新消息
- 使用 Google Analytics 4 示範如何追蹤擴充功能彈出式視窗和服務工作者事件的使用情形。
- 使用地理位置說明如何使用 Offscreen API 取得擴充功能的地理位置。
- 「錄音和螢幕截圖」教您如何使用
chrome.tabCapture
和navigator.mediaDevices.getDisplayMedia()
API,從分頁、視窗或螢幕擷取音訊和視訊。 - 我們已在「偵錯擴充功能」指南中新增偵錯提示。
- 我們已更新權限警告規範,方便您瞭解權限警告的運作方式,以及如何提供更優質的使用者體驗。此外,您也可以透過實用的方式查看使用者會看到哪些警告。
- 我們的團隊和貢獻者也新增了新的資訊清單 V3 擴充功能範例:擴充功能中的 WASM、Scripting API 示範、Side Panel API 食譜和 DeclarativeNetRequest API 範例。您可以在我們的 GitHub 範例存放區中探索其他擴充功能範例。
即將推出...
- 如何將遠端代管的程式碼遷移至 Manifest V3。
- 如何執行 Chrome 擴充功能的自動化測試。
- 改善宣告式網路要求指南。
- 改善內容指令碼說明。
💡? 你知道嗎?
在結束前,我們想分享幾個實用工具和洞察資料:
- Chrome 開始支援 WebHID;您可以從 Chrome 115 開始試用這個 API (但請注意,這個 API 仍在開發中)。
- Puppeteer 現在支援使用
--headless=new
在無頭模式下進行測試。如要進一步瞭解這項功能,請參閱 Chrome 無頭模式升級 網誌文章。 - 您可以使用擴充功能更新測試工具,查看在資訊清單中變更權限時會觸發哪些警告。這樣一來,您就能像使用者一樣體驗更新程序。這點很重要,因為部分權限可能會在使用者重新授予存取權之前,停用擴充功能。
歡迎與我們聯絡!🙌
今年,擴充功能團隊很高興在 Google I/O Connect 活動中與擴充功能開發人員面對面交流。我們正在努力打造新的空間,與你交流互動,例如推出焦點小組和聚會活動。
在此期間,請繼續在 chromium-groups 上發問問題,並考慮加入 WECG,並在 developer.chrome.com GitHub 存放區上回報任何說明文件問題。
再次感謝你加入擴充功能開發人員社群!