Xuất bản: Ngày 15 tháng 1 năm 2024
Trừ phi có ghi chú khác, các thay đổi sau đây áp dụng cho bản phát hành mới nhất của kênh Chrome beta cho Android, ChromeOS, Linux, macOS và Windows. Tìm hiểu thêm về các tính năng được liệt kê tại đây thông qua các đường liên kết được cung cấp hoặc trong danh sách trên ChromeStatus.com. Chrome 133 là phiên bản beta kể từ ngày 15 tháng 1 năm 2024. Bạn có thể tải phiên bản mới nhất xuống từ Google.com cho máy tính hoặc từ Cửa hàng Google Play trên Android.
CSS và giao diện người dùng
Bản phát hành này bổ sung 7 tính năng mới về CSS và giao diện người dùng.
Hàm attr() nâng cao của CSS
Triển khai việc tăng cường cho attr() được chỉ định trong CSS cấp 5, cho phép các loại ngoài <string> và sử dụng trong tất cả các thuộc tính CSS (ngoài sự hỗ trợ hiện có cho phần tử giả content).
Tìm hiểu thêm trong bài viết CSS attr() được nâng cấp.
Lớp giả :open CSS
Lớp giả :open khớp với <dialog> và <details> khi ở trạng thái mở, đồng thời khớp với <select> và <input> khi ở chế độ có bộ chọn và bộ chọn đang hiển thị.
Truy vấn vùng chứa trạng thái cuộn CSS
Sử dụng truy vấn vùng chứa để tạo kiểu cho các phần tử con của vùng chứa dựa trên trạng thái cuộn của chúng.
Vùng chứa truy vấn là vùng chứa có thể cuộn hoặc một phần tử chịu ảnh hưởng của vị trí cuộn của vùng chứa có thể cuộn. Bạn có thể truy vấn các trạng thái sau:
stuck: Vùng chứa được đặt ở vị trí cố định sẽ nằm cố định ở một trong các cạnh của hộp cuộn.snapped: Vùng chứa được căn chỉnh theo chế độ cuộn nhanh hiện đang được cố định theo chiều ngang hoặc chiều dọc.scrollable: Liệu vùng chứa có thể cuộn có thể cuộn theo hướng được truy vấn hay không.
Một container-type: scroll-state mới cho phép truy vấn các vùng chứa.
#sticky {
position: sticky;
container-type: scroll-state;
}
@container scroll-state(stuck: top) {
#sticky-child {
font-size: 75%;
}
}
Tìm hiểu thêm trong CSS scroll-state().
CSS text-box, text-box-trim và text-box-edge
Để đạt được sự cân bằng tối ưu về nội dung văn bản, các thuộc tính text-box-trim và text-box-edge, cùng với thuộc tính viết tắt text-box, giúp bạn kiểm soát chính xác hơn việc căn chỉnh văn bản theo chiều dọc.
Thuộc tính text-box-trim chỉ định các cạnh cần cắt, ở trên hoặc ở dưới và thuộc tính text-box-edge chỉ định cách cắt cạnh.
Các thuộc tính này cho phép bạn kiểm soát chính xác khoảng cách dọc bằng cách sử dụng các chỉ số phông chữ. Tìm hiểu thêm trong CSS text-box-trim.
Giá trị hint của thuộc tính popover
API Popover chỉ định hành vi cho 2 giá trị của thuộc tính popover: auto và manual. Tính năng này mô tả giá trị thứ ba là popover=hint. Gợi ý (thường liên kết với các hành vi thuộc loại "chú thích") có hành vi hơi khác. Chủ yếu, sự khác biệt là hint phụ thuộc vào auto khi mở các ngăn xếp lồng nhau của cửa sổ bật lên. Do đó, bạn có thể mở một cửa sổ bật lên hint không liên quan trong khi một ngăn xếp cửa sổ bật lên auto hiện có vẫn mở.
Ví dụ chuẩn là khi một bộ chọn <select> đang mở (popover=auto) và một chú giải công cụ do thao tác di chuột kích hoạt (popover=hint) xuất hiện. Thao tác đó không đóng bộ chọn <select>.
Cải thiện vị trí điểm neo và đối tượng gọi cửa sổ bật lên
Thêm một cách bắt buộc để thiết lập mối quan hệ giữa các đối tượng gọi với các cửa sổ bật lên bằng popover.showPopover({source}). Cho phép các mối quan hệ của đối tượng gọi tạo các tham chiếu đến phần tử neo ngầm ẩn.
Popover lồng bên trong trình gọi không được gọi lại
Trong trường hợp sau, việc nhấp vào nút sẽ kích hoạt đúng cách cửa sổ bật lên, tuy nhiên, việc nhấp vào chính cửa sổ bật lên sau đó sẽ không đóng cửa sổ bật lên.
<button popovertarget=foo>Activate
<div popover id=foo>Clicking me shouldn't close me</div>
</button>
Trước đây, điều này xảy ra vì các bong bóng nhấp vào cửa sổ bật lên đến <button> và kích hoạt trình gọi, trình này sẽ chuyển đổi cửa sổ bật lên đã đóng. Giờ đây, hành vi này đã được thay đổi thành hành vi dự kiến.
Web API
Animation.overallProgress
Cung cấp cho nhà phát triển một cách biểu thị thuận tiện và nhất quán về mức độ tiến triển của một ảnh động trong các lần lặp lại và bất kể bản chất của dòng thời gian. Nếu không có thuộc tính overallProgress, bạn cần tính toán thủ công mức độ tiến triển của một ảnh động, tính đến số lần lặp lại của ảnh động và liệu currentTime của ảnh động có phải là tỷ lệ phần trăm của tổng thời gian (như trong trường hợp ảnh động dựa trên thao tác cuộn) hay một khoảng thời gian tuyệt đối (như trong trường hợp ảnh động dựa trên thời gian).
Phương thức pause() của đối tượng Atomics
Thêm phương thức pause() vào đối tượng không gian tên Atomics để gợi ý cho CPU rằng mã hiện tại đang thực thi một khoá spinlock.
Báo cáo băm CSP cho tập lệnh
Các ứng dụng web phức tạp thường cần theo dõi những tài nguyên phụ mà chúng tải xuống vì mục đích bảo mật.
Cụ thể, các tiêu chuẩn và phương pháp hay nhất sắp tới trong ngành (ví dụ: PCI-DSS phiên bản 4) yêu cầu các ứng dụng web phải lưu giữ danh sách tất cả các tập lệnh mà chúng tải xuống và thực thi.
Tính năng này được xây dựng dựa trên CSP và API Báo cáo để báo cáo các URL và hàm băm (cho CORS/cùng nguồn gốc) của tất cả tài nguyên tập lệnh mà tài liệu tải.
Di chuyển giữ nguyên trạng thái DOM
Thêm một nguyên tắc cơ bản DOM (Node.prototype.moveBefore) cho phép bạn di chuyển các phần tử xung quanh cây DOM mà không cần đặt lại trạng thái của phần tử.
Khi di chuyển thay vì xoá và chèn, trạng thái sau đây (chẳng hạn như trạng thái sau) sẽ được giữ nguyên:
<iframe>phần tử vẫn được tải.- Phần tử đang hoạt động vẫn giữ tiêu điểm.
- Cửa sổ bật lên, chế độ toàn màn hình và hộp thoại phương thức vẫn mở.
- Hiệu ứng chuyển đổi và ảnh động CSS vẫn tiếp tục.
Hiển thị thuộc tính attributionsrc trên <area>
Điều chỉnh mức độ hiển thị của thuộc tính attributionsrc trên <area> cho phù hợp với hành vi xử lý hiện có của thuộc tính, ngay cả khi thuộc tính đó không được hiển thị.
Ngoài ra, bạn nên hỗ trợ thuộc tính này trên <area>, vì phần tử đó là một giao diện điều hướng hạng nhất và Chrome đã hỗ trợ thuộc tính này trên các giao diện khác của <a> và window.open
Hiển thị renderTime trên nhiều nguồn gốc được làm thô trong thời gian của phần tử và LCP (bất kể Timing-Allow-Origin)
Các mục nhập LCP và thời gian của phần tử có thuộc tính renderTime, được căn chỉnh với khung hình đầu tiên mà hình ảnh hoặc văn bản được hiển thị.
Thuộc tính này hiện được bảo vệ cho hình ảnh trên nhiều nguồn bằng cách yêu cầu tiêu đề Timing-Allow-Origin trên tài nguyên hình ảnh. Tuy nhiên, bạn có thể dễ dàng khắc phục hạn chế đó (ví dụ: bằng cách hiển thị hình ảnh cùng nguồn gốc và hình ảnh khác nguồn gốc trong cùng một khung).
Vì điều này gây ra sự nhầm lẫn, nên chúng tôi dự định xoá hạn chế này và thay vào đó, tăng tất cả thời gian kết xuất lên 4 mili giây khi tài liệu không được cách ly trên nhiều nguồn gốc. Điều này có vẻ đủ thô để tránh rò rỉ bất kỳ thông tin hữu ích nào về thời gian giải mã đối với hình ảnh trên nhiều nguồn.
Huỷ responseStart và giới thiệu firstResponseHeadersStart
Khi bạn bật 103 Gợi ý sớm, các phản hồi sẽ có 2 dấu thời gian:
- Khi Gợi ý ban đầu xuất hiện (103)
- Khi tiêu đề cuối cùng xuất hiện (ví dụ: 200)
Khi Chrome 115 được phát hành firstInterimResponseStart để cho phép đo lường hai dấu thời gian này, chúng tôi cũng đã thay đổi ý nghĩa của responseStart (được Thời gian cho byte đầu tiên (TTFB) sử dụng) thành "các tiêu đề cuối cùng". Điều này đã tạo ra một vấn đề về khả năng tương thích web với các trình duyệt và công cụ không thực hiện thay đổi tương tự cho chỉ số thường dùng này.
Chrome 133 sẽ huỷ thay đổi responseStart này để giải quyết vấn đề về khả năng tương thích này và thay vào đó sẽ giới thiệu firstResponseHeadersStart để cho phép các trang web đo thời gian cho đến tiêu đề cuối cùng, đồng thời vẫn giữ nguyên định nghĩa ban đầu về TTFB.
Giao diện FileSystemObserver
Giao diện FileSystemObserver sẽ thông báo cho các trang web về những thay đổi đối với hệ thống tệp. Các trang web theo dõi những thay đổi đối với tệp và thư mục mà người dùng đã cấp quyền trước đó trên thiết bị cục bộ của người dùng hoặc trong Bucket File System (còn gọi là Origin Private File System) và được thông báo về thông tin thay đổi cơ bản, chẳng hạn như loại thay đổi.
Bị treo ở chế độ Trình tiết kiệm pin
Khi Trình tiết kiệm pin đang hoạt động, Chrome sẽ đóng băng một "nhóm bối cảnh duyệt web" đã bị ẩn và không hoạt động trong hơn 5 phút nếu bất kỳ nhóm con nào có các khung cùng nguồn trong nhóm đó vượt quá ngưỡng sử dụng CPU, trừ phi:
- Cung cấp chức năng hội nghị truyền hình hoặc hội nghị truyền hình trực tuyến (được phát hiện bằng cách xác định micrô, camera hoặc tính năng quay màn hình/cửa sổ/thẻ hoặc RTCPeerConnection có RTCDataChannel "đang mở" hoặc MediaStreamTrack "đang phát trực tiếp").
- Điều khiển một thiết bị bên ngoài (được phát hiện khi sử dụng WebUSB, Web Bluetooth, WebHID hoặc Web Serial).
- Giữ một Web Lock hoặc một kết nối IndexedDB chặn quá trình cập nhật phiên bản hoặc một giao dịch trên một kết nối khác.
Đóng băng bao gồm việc tạm dừng thực thi. Nội dung này được xác định chính thức trong Page Lifecycle API.
Ngưỡng sử dụng CPU sẽ được điều chỉnh để đóng băng khoảng 10% thẻ nền khi Trình tiết kiệm pin đang hoạt động.
Nhiều bản đồ nhập
Hiện tại, bản đồ nhập phải tải trước bất kỳ mô-đun ES nào và chỉ có thể có một bản đồ nhập duy nhất cho mỗi tài liệu. Điều đó khiến chúng dễ bị lỗi và có thể chậm khi sử dụng trong các tình huống thực tế: Mọi mô-đun tải trước chúng đều làm hỏng toàn bộ ứng dụng và trong các ứng dụng có nhiều mô-đun, chúng trở thành một tài nguyên chặn lớn, vì toàn bộ bản đồ cho tất cả các mô-đun có thể cần tải trước.
Tính năng này cho phép nhập nhiều bản đồ cho mỗi tài liệu bằng cách hợp nhất chúng theo cách nhất quán và xác định.
Tiêu đề về quyền truy cập vào bộ nhớ
Cung cấp một cách thay thế để các thành phần được nhúng đã xác thực chọn sử dụng cookie không được phân vùng. Các tiêu đề này cho biết liệu cookie chưa được phân vùng có được (hoặc có thể được) đưa vào một yêu cầu mạng nhất định hay không, đồng thời cho phép các máy chủ kích hoạt quyền "storage-access" mà chúng đã được cấp. Việc cung cấp một cách khác để kích hoạt quyền "storage-access" cho phép các tài nguyên không phải iframe sử dụng và có thể giảm độ trễ cho các thành phần được nhúng đã xác thực.
Hỗ trợ tạo ClipboardItem bằng Promise<DOMString>
ClipboardItem (đầu vào cho phương thức write() của bảng nhớ tạm không đồng bộ) hiện chấp nhận các giá trị chuỗi ngoài Blob trong hàm khởi tạo.
ClipboardItemData có thể là một Blob, một chuỗi hoặc một Promise phân giải thành Blob hoặc chuỗi.
WebAssembly Memory64
Đề xuất memory64 bổ sung khả năng hỗ trợ cho bộ nhớ WebAssembly tuyến tính có kích thước lớn hơn 2^32 bit. Thao tác này không cung cấp hướng dẫn mới mà mở rộng hướng dẫn hiện có để cho phép chỉ mục 64 bit cho các bảng và bộ nhớ.
Web Authentication API: Phương thức PublicKeyCredential getClientCapabilities()
Phương thức PublicKeyCredential getClientCapabilities() cho phép bạn xác định những tính năng WebAuthn mà ứng dụng của người dùng hỗ trợ. Phương thức này trả về danh sách các chức năng được hỗ trợ, cho phép nhà phát triển điều chỉnh trải nghiệm và quy trình xác thực dựa trên chức năng cụ thể của ứng dụng.
WebGPU: Định dạng đỉnh 1 thành phần (và unorm8x4-bgra)
Thêm các định dạng đỉnh bổ sung không có trong bản phát hành ban đầu của WebGPU do thiếu sự hỗ trợ hoặc các phiên bản macOS cũ (không còn được trình duyệt nào hỗ trợ). Định dạng đỉnh 1 thành phần cho phép các ứng dụng chỉ yêu cầu dữ liệu cần thiết khi trước đây chúng phải yêu cầu ít nhất gấp đôi cho các loại dữ liệu 8 và 16 bit. Định dạng unorm8x4-bgra giúp bạn tải màu đỉnh được mã hoá BGRA một cách thuận tiện hơn một chút trong khi vẫn giữ nguyên chương trình đổ bóng.
Thuật toán X25519 của Web Cryptography API
Thuật toán "X25519" cung cấp các công cụ để thực hiện thoả thuận về khoá bằng cách sử dụng hàm X25519 được chỉ định trong [RFC7748]. Bạn có thể dùng giá trị nhận dạng thuật toán "X25519" trong giao diện SubtleCrypto để truy cập vào các thao tác đã triển khai: generateKey, importKey, exportKey, deriveKey và deriveBits.
Bản dùng thử theo nguyên gốc mới
Trong Chrome 133, bạn có thể chọn tham gia các thử nghiệm nguồn gốc mới sau đây.
Chọn không đóng băng khi dùng Trình tiết kiệm pin
Thử nghiệm chọn không tham gia này cho phép các trang web chọn không tham gia hành vi đóng băng trong Trình tiết kiệm pin có trong Chrome 133.
Ngừng sử dụng và xoá
Phiên bản Chrome này giới thiệu các tính năng không dùng nữa và bị xoá như được liệt kê bên dưới. Truy cập ChromeStatus.com để xem danh sách các tính năng dự kiến sẽ không dùng nữa, các tính năng hiện không dùng nữa và các tính năng đã bị xoá trước đây.
Bản phát hành Chrome này không dùng một tính năng.
Ngừng sử dụng giới hạn WebGPU maxInterStageShaderComponents
maxInterStageShaderComponents limit không được dùng nữa do nhiều yếu tố kết hợp. Ngày dự kiến loại bỏ là trong Chrome 135.
- Dư thừa với
maxInterStageShaderVariables: Giới hạn này đã phục vụ một mục đích tương tự, kiểm soát lượng dữ liệu được truyền giữa các giai đoạn của chương trình đổ bóng. - Chênh lệch nhỏ: Mặc dù có sự khác biệt nhỏ trong cách tính hai giới hạn này, nhưng những khác biệt này là không đáng kể và có thể được quản lý hiệu quả trong giới hạn
maxInterStageShaderVariables. - Đơn giản hoá: Việc xoá
maxInterStageShaderComponentsgiúp đơn giản hoá giao diện chương trình đổ bóng và giảm độ phức tạp cho nhà phát triển. Thay vì quản lý hai giới hạn riêng biệt có sự khác biệt nhỏ, họ có thể tập trung vàomaxInterStageShaderVariablescó tên phù hợp và toàn diện hơn.
Bản phát hành Chrome này loại bỏ 2 tính năng.
Xoá quy tắc <link rel=prefetch> 5 phút
Trước đây, khi một tài nguyên được tìm nạp trước bằng <link rel=prefetch>, Chrome sẽ bỏ qua ngữ nghĩa bộ nhớ đệm của tài nguyên đó (cụ thể là max-age và no-cache) cho lần sử dụng đầu tiên trong vòng 5 phút để tránh tìm nạp lại. Giờ đây, Chrome sẽ xoá trường hợp đặc biệt này và sử dụng ngữ nghĩa bộ nhớ đệm HTTP thông thường.
Điều này có nghĩa là nhà phát triển web cần thêm các tiêu đề lưu vào bộ nhớ đệm thích hợp (Cache-Control hoặc Expires) để thấy được lợi ích từ <link rel=prefetch>.
Điều này cũng ảnh hưởng đến <link rel=prerender> không theo tiêu chuẩn.
Xoá trang Chào mừng của Chrome kích hoạt bằng các thẻ chạy lần đầu có lựa chọn ưu tiên ban đầu
Việc thêm chrome://welcome vào thuộc tính first_run_tabs của tệp initial_preferences sẽ không còn ảnh hưởng gì nữa. Chúng tôi sẽ xoá trang này vì trang đó dư thừa so với Trải nghiệm chạy lần đầu kích hoạt trên nền tảng máy tính.