Tính năng mới trong Chrome 116 dành cho tiện ích

Chrome 116 hiện đã có phiên bản beta và có nhiều bản cập nhật thú vị dành cho các nhà phát triển Tiện ích Chrome. Hãy xem nhanh những điểm mới.

Sebastian Benz
Sebastian Benz

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à nhà phát triển muốn có giải pháp để mở bảng điều khiển bên theo phương thức lập trình. Nội dung thông báo: chrome.sidePanel.open hiện đang ở giai đoạn thử nghiệm. Bạn có thể sử dụng tính năng 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ư 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 chạy dịch vụ

Khả năng hỗ trợ WebSocket 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 thêm khả năng hỗ trợ WebSocket trong trình chạy dịch vụ vì tất cả hoạt động của WebSocket sẽ đặt lại bộ tính giờ không hoạt động của trình chạy dịch vụ trong 30 giây. Điều này có nghĩa là miễn là WebSocket của bạn còn hoạt động, trình chạy dịch vụ sẽ vẫn hoạt động.

Bạn có thể sử dụng tuỳ chọn này để triển khai cơ chế duy trì hoạt động nhằm đảm bảo trình chạy dịch vụ luôn hoạt động trong khi bạn chờ thư từ máy chủ của mình – ngay cả khi mất hơn 30 giây cho đến khi thư tiếp theo đế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ẫnmẫu WebSocket mới của chúng tôi để biết thêm chi tiết.

Khả năng duy trì hoạt động mạnh mẽ cho nhân viên dịch vụ

Nói về vòng đời của trình chạy dịch vụ, chúng tôi đã có một bản cập nhật quan trọng khác: khả năng duy trì mạnh mẽ các API yêu cầu tương tác của người dùng. Những API yêu cầu tương tác của người dùng sẽ có khả năng giữ "mạnh" cho worker dịch vụ tiện ích (tức là cho phép worker này mất hơn 5 phút trong tác vụ này):

Ghi âm và quay video trong nền

Một sự khác biệt nữa giữa Manifest V2 và Manifest V3 đã được thu hẹp: bạn có thể ghi âm và quay video ở chế độ nền bằng tabCapture và các tài liệu ngoài màn hình. Sử dụng API chrome.tabCapture trong trình chạy dịch vụ để lấy mã luồng sau một cử chỉ của người dùng. Sau đó, dữ liệu này có thể được chuyển đến một tài liệu ngoài màn hình để bắt đầu quay.

Xem hướng dẫn về tabCapture mà chúng tôi mới cập nhật để tìm hiểu cách hoạt động của tính năng này hoặc xem mẫu Ghi thẻ – Trình ghi để xem ví dụ về cách hoạt động.

API mới: Runtime.getContexts()

API runtime.getContexts() mới cho phép bạn tìm nạp thông tin về bối cảnh đang hoạt động được liên kết với tiện ích của bạn. Ví dụ: bạn có thể dùng công 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 ngoài màn hình: GEOLOCATION

Chúng tôi đã thêm geolocation làm lý do hợp lệ khác cho việc sử dụng tài liệu ngoài màn hình. Hãy xem hướng dẫn của chúng tôi về việc sử dụng tính năng định vị vị trí để tìm hiểu thêm về cách lấy vị trí địa lý của tiện ích bằng API Ngoài màn hình.

chrome.action.setBadgeText()

Chúng tôi đã cập nhật action.setBadgeText để giải quyết trường hợp không nhất quán giữa Manifest V2 và Manifest V3. Việc chuyển một chuỗi trống hoặc null đến action.setBadgeText sẽ xoá văn bản huy hiệu cho thẻ được chỉ định và thay thế thành văn bản huy hiệu chung được đặt mặc định.

action.setBadgeText({tabId: tabId, text: ''});

Tóm tắt: một bước khác để triển khai Manifest V3

Với khả năng hỗ trợ vòng đời của Service Worker được cải thiện và API TabCapture được cập nhật, chúng tôi đã tiếp tục thúc đẩy mục tiêu thu hẹp khoảng cách tính năng giữa Manifest V2 và V3. Hãy xem trang các vấn đề đã biết để biết trạng thái hiện tại.