Chrome 擴充功能有哪些地方?'

到目前為止,2023 年是 Chrome 擴充功能盛行的一年。你的寶貴意見可協助我們改善擴充功能平台和說明文件。我們也會繼續與 WebExtensions 社群群組中的其他瀏覽器廠商合作,讓擴充功能 API 在不同瀏覽器上的運作更一致。

在這篇文章中,我們會介紹 Chrome 擴充功能團隊今年上半年進行了哪些調整,以及本季稍晚會推出的功能。開始上課吧!

全新的擴充功能 API 與功能

在本節中,我想介紹幾項重要的 API 推出、簡短說明其他 API 改善項目,並分享即將推出的 API 版本。

重點特色

螢幕外的文件

Chrome 109 版本導入了 Offscreen API。可讓 Manifest V3 擴充功能處理需要與 DOM 或視窗互動的用途,但這項功能無法在擴充功能 Service Worker 中執行。此外,Chrome 114 還導入了兩個額外的畫面外原因:'WORKERS' (適用於文件需要產生工作站的情況) 和 'LOCAL_STORAGE',用於協助將資料從 window.localStorage 遷移至 chrome.storage API

從 Chrome 115 版開始,您可以在建立螢幕外文件時,說明多種原因。這樣您就能在同一份文件中執行兩項相關工作。

新增側邊面板 API 🎉?

過去在擴充功能中建立側欄時,您只能在每個網頁中插入含有內容指令碼的新元素。在 Chrome 114 版中,已推出 Side Panel API。現在,您可以透過更簡單明瞭的方式為使用者提供側欄服務。進一步瞭解 Side Panel API 如何設計更優質的使用者體驗

用於顯示所選字詞定義的字典擴充功能
側邊面板字典擴充功能。請參閱 chrome-extensions-samples 存放區中的程式碼

更強大的 Service Worker

所有擴充功能事件現在都會重新啟動擴充功能 Service Worker 的閒置計時器。Chrome 110 移除了擴充功能服務工作處理程序,生命週期最長為五分鐘。此外,傳送給原生應用程式的訊息和擴充功能中的訊息也會重新啟動閒置計時器。詳情請參閱擴充功能 Service Worker 生命週期一文。

更多 API 推出

  • Action API:自 Chrome 110 版起,您可以使用 setBadgeTextColor()getBadgeTextColor() 自訂標記文字。此外,isEnabled() 也能檢查目前分頁是否已啟用這個動作。
  • Commands API:根據 Chrome 111 修正,在 "commands._execute_action" 資訊清單宣告的擴充功能捷徑在 MV3 轉換期間不會保留的錯誤。
  • Downloads API:Chrome 的預設下載使用者介面已從網址列右側的檔案櫃移至面板。如要停用這項行為,您可以使用取代 setShelfEnabled()downloads.setUiOptions()
  • History APIchrome.history.getVisits()chrome.history.search() 也會傳回已同步到本機記錄資料庫的其他裝置資料。這可能會造成更多記錄項目記錄和造訪次數增加。在 Chrome 115 版 (預計於本月稍晚將推出穩定版) 將「isLocal」新增至 VisitItem,才能只按當地造訪次數篩選。
  • Identity API:驗證視窗現在會顯示為彈出式視窗,而非佔滿整個應用程式視窗。為在 JavaScript 重新導向過程中授予更多控制權,我們新增了兩個選項:abortOnLoadForNonInteractivetimeoutMsForNonInteractive
  • Storage API:在 Chrome 112 中,chrome.session 儲存空間大小已增加為 10 MB。接著在 Chrome 114 中調整 chrome.local 儲存空間大小。

即將推出...

即將推出的 Chrome 版本會推出許多功能,讓擴充功能可以更輕鬆地遷移至 Manifest V3。如需即將推出的 MV3 遷移相關異動清單,請參閱已知問題頁面。此外,我們計劃新增下列功能:

  • DeclarativeNetRequest APIisUrlFilterCaseSensitive 屬性的預設值將變更為 false。請參閱 WECG 執行緒。
  • File Handling API 可讓 ChromeOS 擴充功能開啟指定 MIME 類型和副檔名的檔案。這項功能目前位於旗幟後方
  • Runtime API:我們即將推出 runtime.getContexts(),以取代已淘汰的 extension.getViews()。這項擴充功能可讓擴充功能判斷擴充功能頁面 (例如側邊面板或螢幕外文件) 是否已開啟。請參閱 WECG 提案。
  • 服務工作人員:我們即將在 Chrome API 中加入強大的保持運作機制,這些 API 會顯示使用者提示:permissions.request()desktopCapture.chooseDesktopMedia()identity.launchWebAuthFlow()management.uninstall()
  • Side Panel API:我們即將推出 sidepanel.open(),這項功能會根據使用者手勢 (例如內容選單點擊) 以程式輔助方式開啟擴充功能側邊面板。
  • TabCapture API:我們新增了一項功能,可從擴充功能 Service Worker 呼叫 getMediaStreamId(),並從螢幕外文件中從串流 ID 取得 MediaStream。如需範例,請參閱「音訊錄音和螢幕畫面擷取」。

請密切關注「擴充功能的新功能」頁面,掌握 Chrome Beta 版發布的公告。

說明文件升級和其他 Manifest V3 指南

此外,我們也持續努力改善開發人員的學習體驗。非常感謝各位抽空前往 chromium-group 提問,並前往 developer.chrome.com 回報說明文件問題。

重點特色

  • 全新「MV3 遷移」一節提供將 Manifest V2 擴充功能轉換為 Manifest V3 的實用方法。
  • 擴充功能服務工作人員指南提供擴充功能 Service Worker 相關主題的詳細資訊。包括註冊和更新方式、生命週期及其匯入方式等。
  • 使用服務工作處理程序處理事件」教學課程說明擴充功能服務工作站的基本概念。它會建構網址列擴充功能,方便您快速存取擴充功能 API 參考資料頁面。

更多最新消息

即將推出...

  • 如何將遠端代管的程式碼遷移至 Manifest V3。
  • 如何針對 Chrome 擴充功能執行自動化測試。
  • 改善「宣告式網路要求」指南。
  • 改善內容指令碼說明。

💡? 你知道嗎?

總結前,我們想分享幾項實用的工具和深入分析:

  • Chrome 已開始支援 WebHID,您可以盡情嘗試從 Chrome 第 115 版開始試用這個 API (但請注意,該 API 仍在開發中)。
  • Puppeteer 現在支援使用 --headless=new 以無頭模式進行測試。詳情請參閱「Chrome 的無頭模式升級」網誌文章。
  • 您可以使用 Extension Update Testing Tool (擴充功能更新測試工具),查看在資訊清單中的權限變更時,會觸發哪些警告。如此一來,您可以像使用者一樣體驗更新程序。這點非常重要,因為某些權限可能會停用這項擴充功能,直到使用者再次授予存取權。

與我們聯絡!🙌

今年,延伸計畫團隊很高興能在 Google I/O Connect 活動中與擴充功能開發人員面對面交流。我們正努力建立新的聊天室 (例如發起焦點團體和聚會活動),與你交流互動。

在此期間,請繼續至 chromium-groups 提問、建議您參與 WECG,並在 developer.chrome.com GitHub 存放區中回報任何說明文件問題。

再次感謝你成為擴充功能開發人員社群的一員!