Chrome 148

Ngày phát hành phiên bản ổn định: Ngày 5 tháng 5 năm 2026

Trừ phi có ghi chú khác, những thay đổi sau đây sẽ áp dụng cho bản phát hành kênh ổn định Chrome 148 cho Android, ChromeOS, Linux, macOS và Windows.

CSS và giao diện người dùng

Truy vấn vùng chứa chỉ có tên CSS

Bạn chỉ có thể truy vấn vùng chứa truy vấn CSS dựa trên container-name và vùng chứa không cần phải đặt container-type:

#container {
  container-name: --foo;
}
@container --foo {
  input { background-color: green; }
}
<div id="container">
  <div><input></div>
</div>

Trước đây, @container yêu cầu một loại vùng chứa ngoài tên.

Lỗi theo dõi số 40287550 | Mục nhập ChromeStatus.com | Thông số kỹ thuật

At-rule: Tính năng phát hiện CSS

Tính năng này thêm hàm at-rule() vào CSS @supports, cho phép tác giả phát hiện tính năng hỗ trợ cho các quy tắc @ của CSS.

Lỗi theo dõi số 40211832 | Mục nhập ChromeStatus.com | Thông số kỹ thuật

Kết xuất hình dạng văn bản và ký tự Open Font Format avar2

Phiên bản 2 của bảng avar (Axis Variations) cho phép nhà thiết kế phông chữ tạo phông chữ có thể thay đổi với khả năng kiểm soát tốt hơn đối với nội suy. Mặc dù thông số kỹ thuật phông chữ biến đổi ban đầu xử lý các trục một cách độc lập, nhưng avar2 cho phép các trục ảnh hưởng lẫn nhau. Điều này giúp các tác giả nội dung dễ dàng sử dụng phông chữ hơn và cho phép lưu trữ nhỏ gọn.

Avar2 hoạt động bằng cách sử dụng các khái niệm quen thuộc về biến thể phông chữ, nhưng áp dụng các giá trị delta biến đổi cho chính thông số kỹ thuật trục thiết kế. Ngoài ra, bạn có thể thực hiện việc này trên nhiều trục.

Ví dụ: tính năng này cho phép nhà thiết kế phông chữ tạo "thanh trượt meta" để kiểm soát nhiều trục biến thể cùng một lúc, giúp người dùng không phải tinh chỉnh và tìm được một góc hữu ích trong không gian thiết kế của phông chữ.

Avar2 giúp nhà thiết kế phông chữ kiểm soát tốt hơn không gian biến thể có thể sử dụng của phông chữ và cho phép họ điều phối việc điều chỉnh các trục thiết kế trên nhiều trục.

Bằng cách xác định mối quan hệ giữa các trục theo cách toán học trong bảng avar phiên bản 2, các phông chữ có thể đạt được những thiết kế phức tạp với ít mẫu hơn, dẫn đến kích thước tệp nhỏ hơn, vì quá trình nội suy được lưu trữ hiệu quả hơn.

Lỗi theo dõi số 40246300 | Mục nhập ChromeStatus.com | Quy cách

Từ khoá revert-rule

Từ khoá revert-rule sẽ khôi phục tầng theo quy tắc trước đó, tương tự như cách revert-layer khôi phục tầng theo lớp trước đó. Ví dụ:

div { color: green; }
div { color: revert-rule; /* Effectively green */ }

Điều này đặc biệt hữu ích khi kết hợp với các điều kiện, vì nó cho phép bạn loại bỏ quy tắc hiện tại nếu một số điều kiện không được đáp ứng:

div {
  display: if(style(--layout: fancy): grid; else: revert-rule);
}

Lỗi theo dõi số 393582263 | Mục nhập ChromeStatus.com | Thông số kỹ thuật

Tải từng phần cho các phần tử video và âm thanh

Thêm thuộc tính loading vào các phần tử <video><audio>, cho phép nhà phát triển hoãn tải tài nguyên nghe nhìn cho đến khi phần tử ở gần khung hiển thị bằng cách sử dụng loading="lazy". Điều này phù hợp với hành vi tải từng phần hiện có cho các phần tử <img><iframe>, giúp cải thiện hiệu suất tải trang và giảm mức sử dụng dữ liệu.

Lỗi theo dõi số 469111735 | Mục nhập ChromeStatus.com | Thông số kỹ thuật

text-decoration-skip-ink: all

Thêm giá trị all cho thuộc tính text-decoration-skip-ink CSS.

Thuộc tính text-decoration-skip-ink đã hỗ trợ autonone. Giá trị all mở rộng giá trị này bằng cách áp dụng tính năng bỏ qua mực vô điều kiện cho tất cả các glyph (bao gồm cả các ký tự CJK), trong khi auto để các ký tự CJK không bị bỏ qua vì tính năng bỏ qua mực có xu hướng tạo ra kết quả trực quan không mong muốn cho các tập lệnh chữ tượng hình ở các vị trí gạch chân thông thường.

Với text-decoration-skip-ink: all, những nhà phát triển đã điều chỉnh text-underline-position hoặc text-underline-offset để tránh xung đột với các glyph CJK cũng có thể chọn sử dụng tính năng bỏ qua nét cho những ký tự đó.

Lỗi theo dõi số 40675832 | Mục nhập ChromeStatus.com | Thông số kỹ thuật

Đặt dropEffect một cách chính xác cho các sự kiện dragEnter, dragLeavedragOver

Quy cách kéo và thả yêu cầu thuộc tính dropEffect của đối tượng dataTransfer phải có một số giá trị được xác định trước trên dragEnter, dragOverdragLeave. Thao tác kéo vào và kéo qua phải có dropEffect dựa trên effectAllowed hiện tại và dragLeave phải luôn có none dropEffect. Hiện tại, Chromium không tuân thủ những quy tắc này. Khi tính năng này ra mắt, Chromium sẽ bắt đầu tuân thủ quy cách và chỉ định các giá trị chính xác cho thuộc tính này để các nhà phát triển web có thể bắt đầu dựa vào thuộc tính này.

Lỗi theo dõi số 434151262 | Mục nhập ChromeStatus.com | Quy cách

Ngăn chặn sự kiện con trỏ khi bắt đầu kéo

Theo quy cách HTML, khi bắt đầu kéo, tác nhân người dùng sẽ gửi các sự kiện thích hợp đến nguồn kéo để cho biết rằng luồng sự kiện con trỏ đã kết thúc và không nên mong đợi thêm bất kỳ sự kiện nào từ con trỏ này. Mã này đã được triển khai một phần cho các sự kiện chuột và triển khai đầy đủ cho các thao tác kéo bằng cách chạm trên Android. Với công việc trong tính năng này, chúng tôi hướng đến việc đáp ứng đầy đủ yêu cầu về thông số kỹ thuật này trên tất cả các nền tảng khác. Trên thực tế, điều này có nghĩa là sau khi bắt đầu thao tác kéo, nguồn kéo sẽ nhận được các sự kiện pointercancel, pointeroutpointerleave để cho biết luồng sự kiện hiện tại đã kết thúc.

Lỗi theo dõi số 452372355 | Mục nhập ChromeStatus.com | Quy cách

Tính năng

Nội dung bản địa hoá trong tệp kê khai

Hỗ trợ bản địa hoá các thành phần trong tệp kê khai để ứng dụng có thể điều chỉnh tên, nội dung mô tả, biểu tượng và lối tắt cho phù hợp với ngôn ngữ và khu vực của người dùng. Nhà phát triển cung cấp các giá trị đã bản địa hoá trong tệp kê khai ứng dụng web và trình duyệt sẽ tự động chọn các tài nguyên phù hợp dựa trên chế độ cài đặt ngôn ngữ của người dùng, nhờ đó hỗ trợ ngôn ngữ ở nhiều thị trường.

Tìm hiểu thêm trong bài viết Hỗ trợ bản địa hoá cho tệp kê khai ứng dụng web.

Lỗi theo dõi số 380491647 | Mục nhập ChromeStatus.com | Quy cách

Web trên Android

Web Serial API trên Android

Web Serial API cung cấp một giao diện để kết nối với các thiết bị nối tiếp, thông qua cổng nối tiếp trên hệ thống của người dùng hoặc các thiết bị USB và Bluetooth có thể tháo rời mô phỏng cổng nối tiếp. Giờ đây, tính năng này đã được hỗ trợ trên Android.

Người dùng, đặc biệt là trong các lĩnh vực giáo dục, người có sở thích và công nghiệp, kết nối các thiết bị ngoại vi với máy tính của họ. Các thiết bị này yêu cầu phần mềm tuỳ chỉnh để kiểm soát. Ví dụ: robot thường được dùng để dạy lập trình máy tính và điện tử ở trường học. Việc này đòi hỏi phần mềm có thể tải mã lên một robot hoặc điều khiển robot từ xa. Trong môi trường công nghiệp hoặc môi trường dành cho người có sở thích, một thiết bị như máy phay, máy cắt laser hoặc máy in 3D được điều khiển bằng một chương trình chạy trên máy tính được kết nối. Các thiết bị này thường được điều khiển bằng các vi điều khiển nhỏ thông qua kết nối nối tiếp.

Để biết thêm thông tin, hãy xem hướng dẫn về Web Serial API trên web.devquy cách Web Serial.

Lỗi theo dõi số 365514951 | Mục nhập ChromeStatus.com

SharedWorker trên Android

Trong một thời gian dài, SharedWorker đã bị vô hiệu hoá trên Android do lo ngại về vòng đời quy trình không thể đoán trước của SharedWorker. Các phiên bản SharedWorker có thể chấm dứt đột ngột mà không thông báo cho người dùng hoặc nhà phát triển web.

Tuy nhiên, một cuộc thảo luận gần đây trên GitHub (xem cuộc thảo luận trên GitHub) cho thấy bản chất khó đoán của vòng đời quy trình SharedWorker có thể không phải là một vấn đề lớn như trước đây. Dựa trên điều này, SharedWorker sẽ được bật lại trên Android trong khi chúng tôi điều tra hành vi này để đảm bảo trải nghiệm ổn định và đáng tin cậy.

Lỗi theo dõi số 40290702 | Mục nhập ChromeStatus.com | Thông số kỹ thuật

Web API

WebGPU: Tính năng linear_indexing

Tính năng này bổ sung chức năng cho thông số kỹ thuật WebGPU sau lần đầu tiên được phát hành trong trình duyệt.

Thêm 2 giá trị tích hợp mới của chương trình đổ bóng điện toán để nâng cao chất lượng cuộc sống của người dùng. Các giá trị này được triển khai cho tất cả các phần phụ trợ (dưới dạng polyfill của các giá trị tích hợp hiện có).

Lỗi theo dõi #482840564 | Mục nhập ChromeStatus.com | Spec

Chế độ giao diện người dùng Xác thực web ngay lập tức

Một chế độ mới cho navigator.credentials.get() khiến giao diện người dùng đăng nhập trình duyệt hiển thị cho người dùng nếu có khoá truy cập hoặc mật khẩu cho trang web mà trình duyệt biết ngay, nếu không, chế độ này sẽ từ chối lời hứa bằng NotAllowedError nếu không có thông tin đăng nhập nào như vậy. Điều này cho phép trang web tránh hiển thị trang đăng nhập nếu trình duyệt có thể cung cấp lựa chọn thông tin đăng nhập có khả năng thành công, đồng thời vẫn cho phép quy trình trang đăng nhập truyền thống trong trường hợp không có thông tin đăng nhập như vậy.

Lỗi theo dõi số 408002783 | Mục nhập ChromeStatus.com | Thông số kỹ thuật

Nhận các chức năng Xác nhận thanh toán an toàn

Thêm một phương thức tĩnh mới vào Yêu cầu thanh toán, cho phép nhà phát triển web nhận được các chức năng của việc triển khai Xác nhận thanh toán an toàn của trình duyệt.

Điều này giúp nhà phát triển web biết những chức năng có sẵn cho tính năng Xác nhận thanh toán an toàn để họ có thể quyết định có muốn sử dụng tính năng Xác nhận thanh toán an toàn với những chức năng đó hay không.

Lỗi theo dõi số 484043990 | Mục nhập ChromeStatus.com | Quy cách

Shared worker có thời gian hoạt động lâu hơn

Bản cập nhật này thêm một lựa chọn mới, extendedLifetime: true, vào hàm khởi tạo SharedWorker. Lựa chọn mới này yêu cầu giữ cho worker dùng chung hoạt động ngay cả sau khi tất cả các ứng dụng hiện tại đã được gỡ tải. Điều này cho phép các trang thực hiện tác vụ không đồng bộ yêu cầu JavaScript sau khi một trang huỷ tải mà không cần dựa vào một trình chạy dịch vụ.

Lỗi theo dõi số 400473072 | Mục nhập ChromeStatus.com | Thông số kỹ thuật

Prompt API

Prompt API cho phép nhà phát triển web truy cập trực tiếp vào mô hình ngôn ngữ AI trên thiết bị do trình duyệt cung cấp. Thiết kế API này cung cấp khả năng kiểm soát chi tiết, phù hợp với các hình dạng API đám mây, để tăng cường dần các trang web bằng những lượt tương tác với mô hình phù hợp với từng trường hợp sử dụng riêng lẻ. Điều này bổ sung cho các API mô hình ngôn ngữ dựa trên tác vụ, chẳng hạn như Summarizer API, cũng như nhiều API và khung để suy luận chung trên thiết bị bằng các mô hình học máy do nhà phát triển cung cấp.

Việc triển khai ban đầu hỗ trợ đầu vào là văn bản, hình ảnh và âm thanh. Ngoài ra, các ràng buộc về phản hồi đảm bảo rằng văn bản được tạo tuân thủ các định dạng biểu thức chính quy và giản đồ JSON được xác định trước.

Điều này hỗ trợ nhiều trường hợp sử dụng, từ việc tạo chú thích cho hình ảnh và thực hiện tìm kiếm bằng hình ảnh cho đến việc chép lời âm thanh, phân loại sự kiện âm thanh, tạo văn bản theo hướng dẫn cụ thể và trích xuất thông tin hoặc thông tin chi tiết từ tài liệu nguồn đa phương thức.

Lỗi theo dõi số 417526788 | Mục nhập ChromeStatus.com | Quy cách

Mạng và kết nối

Quy tắc ContextJ của IDNA

IDNA là cơ chế cho các ký tự không phải ASCII trong tên miền. Thao tác này mã hoá một URL như http://네이버.한국/ thành http://xn--950bt9s8xi.xn--3e0b707e/ (một lệnh chuyển hướng đến naver.com).

Quy cách URL đặt cờ CheckJoiners, cho phép các quy tắc ContextJ trong IDNA2008. Điều này không cho phép ZWNJ (U+200C ZERO WIDTH NON-JOINER) và ZWJ (U+200D ZERO WIDTH JOINER) ở hầu hết các vị trí trong URL. Việc triển khai sẽ truyền lựa chọn UIDNA_CHECK_CONTEXTJ đến ICU, nơi quy tắc này được triển khai.

Lỗi theo dõi số 40765949 | Mục nhập ChromeStatus.com | Thông số kỹ thuật

Sử dụng lại hình ảnh không có cửa hàng khi chỉ định lại cùng nguồn

Cho phép sử dụng lại hình ảnh có sẵn trong cùng một tài liệu để bỏ qua Cache-Control: no-store khi cùng một giá trị src được chỉ định lại cho một phần tử <img>. Trước đây, Blink sẽ tìm nạp lại hình ảnh ngay cả khi hình ảnh đó đã được giải mã và có sẵn trong tài liệu. Điều này phù hợp với hành vi hiện tại của Gecko và WebKit.

Lỗi theo dõi số 486562295 | Mục nhập ChromeStatus.com | Thông số kỹ thuật

Hiệu suất

ContentType trong Resource Timing

Thêm trường contentType vào PerformanceResourceTiming để giữ một chuỗi tương ứng với tiêu đề HTTP Content-Type của tài nguyên được tìm nạp do máy chủ trả về.

Lỗi theo dõi số 1366706 | Mục nhập ChromeStatus.com | Thông số kỹ thuật

WebRTC Datachannel: Luôn thương lượng các kênh dữ liệu

Triển khai tiện ích WebRTC alwaysNegotiateDataChannels xác định cách ứng dụng thương lượng các kênh dữ liệu trong đề nghị SDP trước khi tạo một kênh dữ liệu. Thao tác này cũng thương lượng phần m= dữ liệu trước mọi phần m âm thanh hoặc video và sử dụng phần này làm "phần m= được gắn thẻ của bên đề nghị" cho BUNDLE.

Điều này có nghĩa là:

const pc = new RTCPeerConnection({ alwaysNegotiateDataChannels: true });
const offer = await pc.createOffer();

sẽ tạo một đề nghị có dòng m của ứng dụng trong SDP và:

const pc = new RTCPeerConnection({ alwaysNegotiateDataChannels: true });
pc.addTransceiver('audio');
pc.createDataChannel('somechannel');
const offer = await pc.createOffer();

sẽ tạo một đề nghị thương lượng một dòng m của ứng dụng, sau đó là một dòng m âm thanh trong SDP.

Lỗi theo dõi số 433898678 | Mục nhập ChromeStatus.com | Quy cách

Bản dùng thử theo nguyên gốc mới

Tập lệnh mô-đun CSS khai báo

Declarative CSS Modules Scripts là một phần mở rộng của CSS Module Scripts dựa trên tập lệnh hiện có. Chúng cho phép nhà phát triển chia sẻ biểu định kiểu khai báo với các gốc bóng, bao gồm cả các gốc bóng khai báo. Nhà phát triển có thể xác định các mô-đun kiểu cùng dòng bằng <style type="module" specifier="foo"> và áp dụng một mô-đun khai báo cho một DOM bóng khai báo bằng cách tham chiếu đến bộ chỉ định hoặc URL, chẳng hạn như <template shadowrootmode="open" shadowrootadoptedstylesheets="foo">.

Origin Trial | Lỗi theo dõi #448174611 | Mục nhập ChromeStatus.com | Spec

Container Timing API

Container Timing API cho phép giám sát thời điểm các phần được chú thích của DOM xuất hiện trên màn hình và đã hoàn tất quá trình tạo điểm ảnh ban đầu. Nhà phát triển sẽ có thể đánh dấu các mục con của DOM bằng thuộc tính containertiming (tương tự như elementtiming cho Element Timing API) và nhận các mục nhập hiệu suất khi mục đó được vẽ lần đầu tiên. API này sẽ cho phép nhà phát triển đo lường thời gian của nhiều thành phần trong các trang của họ.

Origin Trial | Tracking bug #382422286 | ChromeStatus.com entry | Spec

Phần tử HTML cài đặt ứng dụng web

Cho phép một trang web nhắc người dùng cài đặt ứng dụng web một cách khai báo. Phần tử này có thể chấp nhận 2 thuộc tính cho phép cài đặt nội dung từ một nguồn gốc khác.

Origin Trial | Tracking bug #454827186 | ChromeStatus.com entry | Spec

Thời lượng kiểu Khung hình hoạt hoạ cần nhiều thời gian

Thêm thông tin styleDurationforcedStyleDuration vào Long Animation Frame API (API Khung hình động dài), cho phép nhà phát triển phân biệt thời gian tạo kiểu và bố cục.

Origin Trial | Tracking bug #476826067 | ChromeStatus.com entry | Spec

HTML trong canvas

HTML trong canvas cho phép tuỳ chỉnh quá trình kết xuất HTML bằng canvas với 3 nguyên tắc mới: một thuộc tính để chọn sử dụng các phần tử canvas (layoutsubtree), các phương thức để vẽ các phần tử con (2d: drawElementImage, webgl: texElementImage2D, webgpu: copyElementImageToTexture) và một sự kiện vẽ sẽ kích hoạt để xử lý các bản cập nhật.

Origin Trial | Lỗi theo dõi số 500967896 | Mục nhập ChromeStatus.com | Thông số kỹ thuật

Danh sách kết nối được cho phép

Danh sách cho phép kết nối là một tính năng được thiết kế để cung cấp quyền kiểm soát rõ ràng đối với các điểm cuối bên ngoài bằng cách hạn chế các kết nối được bắt đầu bằng Fetch API hoặc các API nền tảng web khác từ một tài liệu hoặc worker.

Việc triển khai được đề xuất liên quan đến việc phân phối danh sách điểm cuối được uỷ quyền từ máy chủ thông qua tiêu đề phản hồi HTTP. Trước khi thiết lập bất kỳ kết nối nào thay cho một trang, tác nhân người dùng sẽ đánh giá đích đến dựa trên danh sách cho phép này; các kết nối đến những điểm cuối đã xác minh sẽ được cho phép, trong khi những kết nối không khớp với các mục trong danh sách sẽ bị chặn.

Origin Trial | Tracking bug #447954811 | ChromeStatus.com entry | Spec

Các tham số lấy mẫu của Prompt API

Thêm các tham số lấy mẫu vào Prompt API. Các tham số này kiểm soát cách lấy mẫu mã thông báo từ mô hình, giúp nhà phát triển kiểm soát "mức độ sáng tạo" hoặc "tính ngẫu nhiên" của đầu ra. Ngoài ra, nó còn thêm các thuộc tính vào thực thể LanguageModel để đọc các giá trị đã đặt, cũng như một hàm LanguageModel tĩnh để lấy các giá trị mặc định và tối đa của các tham số này.

Lần triển khai đầu tiên sẽ thêm các tham số temperaturetopK.

Origin Trial | Tracking bug #496663356 | ChromeStatus.com entry | Spec

Phân tích cú pháp chỉ thị xử lý trong HTML

Lệnh xử lý (cú pháp: <?target data>) là một cấu trúc DOM hiện có, được hiển thị trong XML, cho phép các đối tượng nút không phải là phần tử nhưng có thể có một số ý nghĩa ngữ nghĩa để xử lý tài liệu.

Ví dụ: bạn có thể dùng các chỉ thị này để biểu thị các dải thời gian phát trực tuyến hoặc đánh dấu mà không cần đến các phần tử DOM mới và thay đổi cấu trúc DOM theo như CSS, hoặc làm chỉ thị cho trình phân tích cú pháp HTML về cách đệm và phát trực tuyến.

Lỗi theo dõi #481087638 | Mục nhập ChromeStatus.com

OpaqueRange

OpaqueRange biểu thị một khoảng văn bản trực tiếp trong giá trị của một chế độ kiểm soát biểu mẫu, chẳng hạn như <textarea> hoặc <input> dựa trên văn bản, nhờ đó, nhà phát triển có thể làm việc với văn bản giá trị bằng cách sử dụng các API tương tự như phạm vi.

Thao tác này cho phép các hoạt động như getBoundingClientRect(), getClientRects() và tích hợp với CSS Custom Highlight API cho giao diện người dùng như đề xuất nội tuyến, điểm nổi bật và cửa sổ bật lên được cố định. Thao tác này duy trì việc đóng gói bằng cách chỉ hiển thị các độ lệch giá trị trong khi trả về null cho startContainerendContainer, do đó, các điểm cuối DOM và cấu trúc nội bộ không được hiển thị.

Origin Trial | Tracking bug #421421332 | ChromeStatus.com entry