Chrome 116 Beta 版現已推出,其中包含許多令人期待的 Chrome 擴充功能開發人員更新。讓我們快速瞭解有哪些新功能。
以程式輔助方式開啟側邊面板
側邊面板是 Chrome 擴充功能最受歡迎的功能之一,自 Chrome 114 版起開放使用。Side Panel API 推出後,我們收到的第一批意見回饋中,就有開發人員表示希望以程式輔助方式開啟側邊面板。這項功能現已推出 Beta 版。chrome.sidePanel.open
您可以透過程式輔助,在回應使用者互動時開啟擴充功能側邊面板,例如點選右鍵選單:
chrome.contextMenus.onClicked.addListener((info, tab) => {
if (info.menuItemId === 'openSidePanel') {
// This will open the panel in all the pages on the current window.
chrome.sidePanel.open({ windowId: tab.windowId });
}
});
Service Worker 中的 WebSocket 支援
許多擴充功能都打算遷移至 Manifest V3,因此 WebSocket 支援至關重要。Chrome 116 進一步改善了服務工作人員的 WebSocket 支援,因為所有 WebSocket 活動都會重設 30 秒服務工作人員閒置計時器。也就是說,只要 WebSocket 處於啟用狀態,服務工作人員就會保持運作。
您可以使用這項機制實作存留機制,確保服務工作人員在等待伺服器傳送訊息時保持運作,即使下則訊息超過 30 秒才送達也一樣:
function keepAlive() {
const keepAliveIntervalId = setInterval(
() => {
if (webSocket) {
webSocket.send('keepalive');
} else {
clearInterval(keepAliveIntervalId);
}
},
// It's important to pick an interval that's shorter than 30s, to
// avoid that the service worker becomes inactive.
2
0 * 1000
);
}
如需更多詳細資料,請參閱新的 WebSocket 指南和範例。
Service Worker 的強效存活機制
說到 Service Worker 生命週期,我們還有一項重要更新:需要使用者互動的 API 現在支援強效存留機制。需要使用者互動的 API 會為擴充功能服務工作人員提供「強效」的存活時間 (也就是允許工作人員執行這項工作超過 5 分鐘):
permissions.request()
desktopCapture.chooseDesktopMedia()
identity.launchWebAuthFlow()
management.uninstall()
在背景錄製音訊和影片
Manifest V2 和 Manifest V3 之間的另一個差距也已縮小:您可以使用 tabCapture
和螢幕外文件在背景錄製音訊和影片。在 Service Worker 中使用 chrome.tabCapture
API,在使用者手勢後取得串流 ID。接著,這項資訊會傳遞至螢幕外文件,開始錄製。
請參閱我們更新的tabCapture
指南,瞭解運作方式,或參閱「Tab Capture - Recorder」範例。
新版 API:runtime.getContexts()
您可以使用新的 runtime.getContexts()
API,擷取與擴充功能相關聯的有效環境資訊。舉例來說,您可以使用這項屬性檢查是否有作用中的螢幕外文件:
const existingContexts = await chrome.runtime.getContexts({});
const offscreenDocument = existingContexts.find(
(c) => c.contextType === 'OFFSCREEN_DOCUMENT
9;
);
新的螢幕外原因:地理位置
geolocation
已新增為使用螢幕外文件的另一個正當理由。如要進一步瞭解如何使用 Offscreen API 取得擴充功能的地理位置,請參閱這份地理位置指南。
chrome.action.setBadgeText()
action.setBadgeText
已更新,可解決 Manifest V2 和 Manifest V3 之間的不一致問題。將空字串或 null
傳遞至 action.setBadgeText
,會清除指定分頁的徽章文字,並改為預設的全域徽章文字。
action.setBadgeText({tabId: tabId, text: '
39;});
摘要:朝 Manifest V3 邁進的另一步
我們持續改善 Service Worker 的生命週期支援,並更新 TabCapture API,致力於縮小 Manifest V2 和 V3 之間的功能差距。如要瞭解目前狀態,請參閱已知問題頁面。