Chrome 116 hiện đã có bản thử nghiệm và bao gồm nhiều điểm cập nhật thú vị dành cho nhà phát triển Tiện ích Chrome. Hãy cùng xem nhanh những điểm mới.
Mở Bảng điều khiển bên theo phương thức lập trình
Bảng điều khiển bên là một trong những tính năng được yêu cầu nhiều nhất trong các tiện ích của Chrome và đã có trong Chrome kể từ phiên bản 114. Sau khi ra mắt API Bảng điều khiển bên, một trong những ý kiến phản hồi đầu tiên mà chúng tôi nhận được là các nhà phát triển muốn có cách mở bảng điều khiển bên theo phương thức lập trình. Và đây là kết quả: chrome.sidePanel.open
hiện đang ở giai đoạn thử nghiệm. Bạn có thể sử dụng phương thức này để mở bảng điều khiển bên của tiện ích theo phương thức lập trình để phản hồi tương tác của người dùng, chẳng hạn như một lượt nhấp vào trình đơn theo bối cảnh:
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 });
}
});
Hỗ trợ WebSocket trong Trình làm việc dịch vụ
Tính năng hỗ trợ WebSocket là rất quan trọng đối với nhiều tiện ích dự định chuyển sang Manifest V3. Chrome 116 cải thiện hơn nữa khả năng hỗ trợ WebSocket trong worker dịch vụ vì tất cả hoạt động WebSocket sẽ đặt lại trình hẹn giờ rảnh của worker dịch vụ 30 giây. Điều này có nghĩa là miễn là WebSocket của bạn đang hoạt động, worker dịch vụ sẽ vẫn hoạt động.
Bạn có thể sử dụng phương thức này để triển khai cơ chế duy trì kết nối, đảm bảo worker dịch vụ luôn hoạt động trong khi bạn chờ tin nhắn từ máy chủ – ngay cả khi phải mất hơn 30 giây thì tin nhắn tiếp theo mới đến:
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.
20 * 1000
);
}
Hãy xem hướng dẫn và mẫu WebSocket mới của chúng tôi để biết thêm thông tin chi tiết.
Tính năng duy trì kết nối mạnh mẽ cho Worker dịch vụ
Nói về vòng đời của worker dịch vụ, chúng tôi cũng đã phát hành một bản cập nhật quan trọng khác: tính năng duy trì kết nối mạnh mẽ cho các API yêu cầu tương tác của người dùng. Các API yêu cầu tương tác của người dùng sẽ có tính năng duy trì kết nối "mạnh" cho worker dịch vụ tiện ích (tức là cho phép worker thực hiện nhiệm vụ này trong hơn 5 phút):
permissions.request()
desktopCapture.chooseDesktopMedia()
identity.launchWebAuthFlow()
management.uninstall()
Ghi âm thanh và video trong nền
Một khoảng cách khác giữa Manifest V2 và Manifest V3 đã được thu hẹp: bạn có thể ghi âm và video ở chế độ nền bằng tabCapture
và tài liệu ngoài màn hình. Sử dụng API chrome.tabCapture
trong worker dịch vụ để lấy mã luồng theo cử chỉ của người dùng. Sau đó, bạn có thể truyền giá trị này đến tài liệu ngoài màn hình để bắt đầu ghi.
Hãy xem hướng dẫn cập nhật về tabCapture
để tìm hiểu cách hoạt động của lớp này hoặc xem ví dụ về cách hoạt động của lớp này trong mẫu Tab Capture – Recorder (Ghi lại thẻ).
API mới: runtime.getContexts()
API runtime.getContexts()
mới cho phép bạn tìm nạp thông tin về ngữ cảnh đang hoạt động liên kết với các tiện ích của mình. Ví dụ: bạn có thể sử dụng phương thức này để kiểm tra xem có tài liệu nào đang hoạt động ngoài màn hình hay không:
const existingContexts = await chrome.runtime.getContexts({});
const offscreenDocument = existingContexts.find(
(c) => c.contextType === 'OFFSCREEN_DOCUMENT'
);
Lý do mới ở chế độ ngoài màn hình: VỊ TRÍ ĐỊA LÝ
geolocation
đã được thêm vào làm lý do hợp lệ khác để sử dụng tài liệu ngoài màn hình. Hãy xem hướng dẫn sử dụng thông tin vị trí địa lý để tìm hiểu thêm về cách lấy thông tin vị trí địa lý của tiện ích bằng API Ngoài màn hình.
chrome.action.setBadgeText()
action.setBadgeText
đã được cập nhật để giải quyết sự không nhất quán giữa Manifest V2 và Manifest V3. Việc truyền một chuỗi trống hoặc null
đến action.setBadgeText
sẽ xoá văn bản huy hiệu cho thẻ đã chỉ định và mặc định là văn bản huy hiệu chung.
action.setBadgeText({tabId: tabId, text: ''});
Tóm tắt: một bước nữa hướng tới Manifest V3
Với tính năng hỗ trợ suốt thời gian hoạt động của Worker được cải thiện và API TabCapture đã cập nhật, chúng tôi đã tiếp tục tiến gần đến mục tiêu thu hẹp khoảng cách về tính năng giữa Manifest V2 và V3. Hãy xem trang về các vấn đề đã biết để biết trạng thái hiện tại.