Chrome 135 beta

Xuất bản: Ngày 5 tháng 3 năm 2025

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 135 là phiên bản beta kể từ ngày 5 tháng 3 năm 2025. 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 13 tính năng mới về CSS và giao diện người dùng.

Vị trí điểm neo ghi nhớ khoảng bù cuộn

Thêm tính năng hỗ trợ cho khái niệm khoảng cách cuộn đã lưu. Khi một phần tử được định vị có một điểm neo mặc định và được liên kết với điểm neo này ở một cạnh, đồng thời dựa vào khối chứa ban đầu ở cạnh còn lại, độ lệch cuộn sẽ được tính đến khi xác định kích thước của phần tử. Điều này có nghĩa là bạn có thể sử dụng tất cả không gian hiển thị (bằng cách dùng position-area) cho phần tử được cố định khi tài liệu được cuộn ở một độ lệch cuộn nhất định. Để tránh bố cục (thay đổi kích thước phần tử) mỗi khi tài liệu được cuộn, trình duyệt sẽ sử dụng khoảng bù cuộn đã ghi nhớ, thay vì luôn sử dụng khoảng bù cuộn hiện tại. Độ lệch cuộn đã ghi nhớ được cập nhật tại một điểm tính toán lại phần tử cố định, đó là vị trí mà phần tử được định vị ban đầu hiển thị hoặc khi một lựa chọn vị trí khác (position-try-fallbacks) được chọn.

Tính trơ của CSS

Việc làm cho một phần tử trở nên trơ ảnh hưởng đến việc phần tử đó có thể được lấy tâm điểm, chỉnh sửa, chọn và tìm kiếm bằng tính năng tìm kiếm trên trang hay không. Thuộc tính này cũng ảnh hưởng đến việc thành phần có xuất hiện trong cây hỗ trợ tiếp cận hay không. Thuộc tính interactivity chỉ định xem một phần tử và các phần tử con trong cây phẳng của phần tử đó (bao gồm cả các đoạn văn bản) có trơ hay không. Thuộc tính interactivity chấp nhận một trong hai giá trị: auto hoặc inert.

Thuộc tính tràn logic

Các thuộc tính CSS overflow-inlineoverflow-block cho phép bạn đặt nội dung tràn theo hướng nội tuyến và hướng khối tương ứng với chế độ viết. Trong chế độ viết ngang overflow-inline sẽ tương ứng với overflow-x, còn trong chế độ viết dọc thì tương ứng với overflow-y.

Thuộc tính dynamic-range-limit

Cho phép trang giới hạn độ sáng tối đa của nội dung HDR.

Hàm shape()

Hàm shape() cho phép các hình dạng tự do thích ứng trong thuộc tính clip-path. Bạn có thể dùng tuỳ chọn này để xác định một loạt lệnh, tương đương với các lệnh trong path(). Tuy nhiên, các lệnh này chấp nhận các đơn vị thích ứng (ví dụ: % hoặc vw), cũng như mọi giá trị CSS như thuộc tính tuỳ chỉnh.

Phần tử giả ::column

Một phần tử giả ::column, cho phép áp dụng một tập hợp kiểu hạn chế cho các đoạn được tạo. Cụ thể, điều này chỉ giới hạn ở những kiểu không ảnh hưởng đến bố cục, do đó có thể áp dụng sau bố cục.

::scroll-button() phần tử giả

Cho phép tạo các nút cuộn tương tác dưới dạng phần tử giả. Ví dụ:

.scroller {
  overflow: auto;
}

.scroller::scroll-button(inline-start) {
  content: "<";
}

.scroller::scroll-button(inline-end) {
  content: ">";
}

Các thành phần này phải có thể lấy tiêu điểm, hoạt động như một nút (bao gồm cả kiểu UA). Khi được kích hoạt, thao tác cuộn sẽ được thực hiện theo hướng với một lượng nhất định. Khi không thể cuộn theo hướng đó, các nút này sẽ bị vô hiệu hoá (và được tạo kiểu bằng :disabled), nếu không thì các nút này sẽ được bật (và được tạo kiểu bằng :enabled). Bộ chọn này cho phép bạn xác định các nút theo 4 hướng logic: block-start, block-end, inline-start, inline-end; cũng như 4 hướng vật lý: up, down, left, right.

::scroll-marker::scroll-marker-group

Thêm ::scroll-marker::scroll-marker-group cho vùng chứa có thể cuộn. Các phần tử giả này cho phép bạn tạo một nhóm các điểm đánh dấu có thể lấy tiêu điểm cho tất cả các mục được liên kết trong vùng chứa có thể cuộn.

Tạo kiểu cho các phần tử giả lồng ghép

Cho phép tạo kiểu cho các phần tử giả được lồng bên trong các phần tử giả khác. Cho đến nay, chế độ hỗ trợ được xác định cho: ::before::marker::after::marker, trong đó ::column::scroll-marker sẽ được hỗ trợ trong tương lai.

Để loại bỏ các rò rỉ nhật ký duyệt web của người dùng, các phần tử liên kết chỉ được tạo kiểu là :visited nếu chúng đã được nhấp vào từ trang web cấp cao nhất này và nguồn gốc khung trước đó. Bằng cách chỉ tạo kiểu cho những đường liên kết đã được nhấp vào trên trang web và khung này trước đây, nhiều cuộc tấn công kênh bên được phát triển để lấy thông tin tạo kiểu cho đường liên kết :visited hiện đã lỗi thời, vì chúng không còn cung cấp thông tin mới về người dùng cho các trang web nữa.

Có một trường hợp ngoại lệ đối với đường liên kết tự trỏ, trong đó đường liên kết đến các trang của chính trang web có thể được tạo kiểu là :visited ngay cả khi người dùng chưa nhấp vào đường liên kết đó trong trang web cấp cao nhất và nguồn gốc khung chính xác này trước đây. Chỉ được bật chế độ miễn trừ này trong các khung cấp cao nhất hoặc khung phụ có cùng nguồn gốc với khung cấp cao nhất. Lợi ích về quyền riêng tư vẫn được đảm bảo vì các trang web đã biết người dùng đã truy cập vào trang con nào, nên không có thông tin mới nào bị lộ. Đây là một trường hợp ngoại lệ do cộng đồng yêu cầu và giúp cải thiện trải nghiệm người dùng.

Ký hiệu hàm tiến trình nội suy: Hàm *progress() của CSS

Biến safe-area-max-inset-*

Ngoài các biến môi trường safe-area-inset, Chrome hiện cũng hỗ trợ các biến max-area-safe-inset-* của các biến này. Không giống như phần lồng ghép động, phần lồng ghép tối đa không thay đổi và thể hiện phần lồng ghép vùng an toàn tối đa có thể.

Những giá trị này là cần thiết khi xây dựng trải nghiệm web tràn viền hiệu quả.

Web API

Thêm chế độ hỗ trợ MediaStreamTrack vào Web Speech API

Thêm chế độ hỗ trợ MediaStreamTrack vào Web Speech API. Web Speech API là một API tiêu chuẩn web cho phép nhà phát triển kết hợp tính năng nhận dạng và tổng hợp lời nói vào các trang web của họ. Hiện tại, Web Speech API sử dụng micrô mặc định của người dùng làm đầu vào âm thanh. Tính năng hỗ trợ MediaStreamTrack cho phép các trang web sử dụng Web Speech API để phụ đề các nguồn âm thanh khác, bao gồm cả các bản âm thanh từ xa.

Phân vùng URL Blob: Tìm nạp và điều hướng

Là một phần tiếp theo của tính năng Phân vùng bộ nhớ, tính năng này triển khai việc phân vùng quyền truy cập vào URL Blob theo Khoá lưu trữ (trang web cấp cao nhất, nguồn gốc khung và giá trị boolean has-cross-site-ancestor), ngoại trừ các yêu cầu điều hướng cấp cao nhất sẽ vẫn chỉ được phân vùng theo nguồn gốc khung.

CSP require-sri-for cho tập lệnh

Chỉ thị require-sri-for cho phép bạn khẳng định rằng mọi tài nguyên thuộc một loại nhất định đều cần được kiểm tra tính toàn vẹn. Nếu bạn cố gắng tải một tài nguyên thuộc loại đó mà không có siêu dữ liệu về tính toàn vẹn, thì thao tác đó sẽ không thành công và kích hoạt báo cáo vi phạm CSP. Ý định này bao gồm giá trị "script" của chỉ thị này.

Tạo ứng dụng trình chạy dịch vụ và kế thừa trình điều khiển trình chạy dịch vụ cho iframe srcdoc

Các tài liệu ngữ cảnh Srcdoc hiện không phải là máy khách trình chạy dịch vụ và không thuộc phạm vi điều chỉnh của trình chạy dịch vụ của thành phần mẹ. Điều này dẫn đến một số điểm khác biệt (ví dụ: Resource Timing báo cáo các URL mà những tài liệu này tải, nhưng trình chạy dịch vụ không chặn các URL đó). Mục tiêu của việc này là khắc phục sự khác biệt bằng cách tạo các ứng dụng khách trình chạy dịch vụ cho iframe srcdoc và khiến chúng kế thừa trình điều khiển trình chạy dịch vụ của ứng dụng mẹ.

Gửi sự kiện nhấp chuột đến con trỏ đã ghi lại

Nếu một con trỏ được ghi lại trong khi sự kiện pointerup đang được gửi đi, thì sự kiện click sẽ được gửi đến mục tiêu được ghi lại thay vì tổ tiên chung gần nhất của các sự kiện pointerdownpointerup theo quy cách Sự kiện trên giao diện người dùng. Đối với các con trỏ chưa được ghi lại, mục tiêu click vẫn không thay đổi.

Float16Array

Thêm mảng đã nhập Float16Array. Các giá trị số được làm tròn thành IEEE fp16 khi ghi vào các thực thể Float16Array.

Kết hợp trình khởi tạo điều hướng vào khoá phân vùng bộ nhớ đệm HTTP

Đã cập nhật sơ đồ khoá bộ nhớ đệm HTTP của Chrome để bao gồm một giá trị boolean is-cross-site-main-frame-navigation nhằm giảm thiểu các cuộc tấn công rò rỉ trên nhiều trang web liên quan đến hoạt động điều hướng cấp cao nhất. Cụ thể, điều này sẽ ngăn chặn các cuộc tấn công trên nhiều trang web, trong đó kẻ tấn công có thể bắt đầu một thao tác điều hướng cấp cao nhất đến một trang nhất định, sau đó điều hướng đến một tài nguyên được biết là do trang tải để suy ra thông tin nhạy cảm thông qua thời gian tải. Thay đổi này cũng cải thiện quyền riêng tư bằng cách ngăn một trang web độc hại sử dụng các thao tác điều hướng để suy luận xem người dùng đã từng truy cập vào một trang web nhất định hay chưa.

Ngăn chặn hoạt động theo dõi HSTS

Giảm thiểu hoạt động theo dõi người dùng của bên thứ ba thông qua bộ nhớ đệm HSTS.

Tính năng này chỉ cho phép nâng cấp HSTS cho các hoạt động điều hướng cấp cao nhất và chặn các hoạt động nâng cấp HSTS cho các yêu cầu về tài nguyên phụ. Việc này khiến các trang web bên thứ ba không thể sử dụng bộ nhớ đệm HSTS để theo dõi người dùng trên web.

Lệnh gọi: thuộc tính commandcommandfor

Các thuộc tính commandcommandfor trên các phần tử <button> cho phép bạn chỉ định hành vi cho các nút theo cách dễ tiếp cận và khai báo hơn, đồng thời giảm lỗi và đơn giản hoá lượng JavaScript cần thiết cho khả năng tương tác. Khi được nhấp, chạm hoặc thực hiện bằng cách nhấn phím, các nút có thuộc tính commandforcommand sẽ gửi một CommandEvent trên phần tử được tham chiếu bằng commandfor, với một số hành vi mặc định như mở hộp thoại và cửa sổ bật lên.

Thêm tính năng hỗ trợ cho <link rel="facilitated-payment" href="..."> dưới dạng một gợi ý rằng trình duyệt sẽ thông báo cho các ứng dụng thanh toán đã đăng ký về một yêu cầu thanh toán đẩy đang chờ xử lý.

Thuộc tính sourceElement NavigateEvent

Khi một thao tác điều hướng được bắt đầu bằng một Phần tử (tức là một lượt nhấp vào đường liên kết hoặc một lượt gửi biểu mẫu), thuộc tính sourceElement trên NavigateEvent sẽ trả về phần tử bắt đầu.

Thay đổi tên lý do của API NotRestoredReasons

API NotRestoredReasons sẽ thay đổi một số văn bản lý do để phù hợp với tên tiêu chuẩn. Những nhà phát triển theo dõi các lý do này có thể nhận thấy sự thay đổi trong nội dung lý do.

On-device Web Speech API

Thay đổi history.pushState bỏ qua URL ứng dụng Service Worker

Sửa đổi thuộc tính Client.url của trình chạy dịch vụ để bỏ qua các thay đổi về URL của tài liệu bằng cách sử dụng history.pushState() và các API nhật ký tương tự khác. Thuộc tính Client.url là URL tạo của tài liệu HTML, bỏ qua những thay đổi như vậy.

Hỗ trợ các thuộc tính relrelList cho SVGAElement

Giao diện SVGAElement trong SVG 2.0 cho phép thao tác với các phần tử <a> tương tự như các phần tử neo HTML. Việc hỗ trợ các thuộc tính relrelList giúp tăng cường tính bảo mật và quyền riêng tư cho nhà phát triển. Việc điều chỉnh này với các phần tử neo HTML giúp đảm bảo tính nhất quán và dễ sử dụng trên các công nghệ web.

Dấu thời gian cho khung hình được mã hoá RTC

Tính năng này bao gồm việc hiển thị cho Web một số dấu thời gian có trong các khung hình được mã hoá WebRTC được truyền qua RTCPeerConnection. Các dấu thời gian được đề cập là:

  • Dấu thời gian chụp: dấu thời gian cho biết thời điểm một khung hình được chụp lần đầu
  • Dấu thời gian nhận: dấu thời gian khi một khung hình được nhận

Cập nhật ProgressEvent để sử dụng kiểu double cho "loaded" và "total"

ProgressEvent có các thuộc tính loadedtotal cho biết tiến trình và loại của các thuộc tính này hiện là unsigned long long. Với tính năng này, loại cho hai thuộc tính này sẽ được thay đổi thành double thay vì, giúp nhà phát triển kiểm soát giá trị nhiều hơn. Ví dụ: giờ đây, nhà phát triển có thể tạo ProgressEvent với total là 1 và loaded tăng dần từ 0 đến 1. Điều này phù hợp với hành vi mặc định của phần tử HTML <progress> nếu bạn bỏ qua thuộc tính max.

API fetchLater

fetchLater() API là một API JavaScript để yêu cầu tìm nạp hoãn lại, đặc biệt hữu ích cho việc báo hiệu đáng tin cậy hơn vào cuối vòng đời của một trang. Sau khi được gọi trong một tài liệu, yêu cầu bị hoãn lại sẽ được trình duyệt xếp hàng ở trạng thái ĐANG CHỜ XỬ LÝ và sẽ được gọi theo điều kiện sớm nhất trong số các điều kiện sau:

Giấy tờ bị huỷ. Sau một khoảng thời gian do người dùng chỉ định. Vì lý do liên quan đến quyền riêng tư, tất cả các yêu cầu đang chờ xử lý sẽ bị xoá khi tài liệu chuyển vào bộ nhớ đệm chuyển tiếp/quay lại (bfcache) bất kể còn bao nhiêu thời gian. Trình duyệt quyết định thời điểm gửi.

API này trả về một FetchLaterResult chứa trường boolean activated có thể được cập nhật để cho biết liệu yêu cầu bị hoãn lại đã được gửi hay chưa. Khi gửi thành công, toàn bộ phản hồi sẽ bị trình duyệt bỏ qua, bao gồm cả nội dung và tiêu đề.

Xin lưu ý rằng theo quan điểm của người dùng API, thời gian gửi chính xác là không xác định.

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

Trong Chrome 135, bạn có thể chọn tham gia các thử nghiệm theo nguyên gốc mới sau đây.

Công cụ kích hoạt mối quan tâm

Tính năng này sẽ thêm một thuộc tính interesttarget vào các phần tử <button><a>. Thuộc tính interesttarget sẽ thêm các hành vi "quan tâm" vào phần tử, sao cho khi người dùng "thể hiện sự quan tâm" đến phần tử, các thao tác sẽ được kích hoạt trên phần tử đích. Các thao tác có thể bao gồm những việc như hiện một cửa sổ bật lên. Tác nhân người dùng sẽ xử lý việc phát hiện thời điểm người dùng "thể hiện sự quan tâm" đến phần tử, bằng cách sử dụng các phương thức như di chuột qua phần tử bằng chuột, nhấn các phím nóng đặc biệt trên bàn phím hoặc nhấn và giữ phần tử trên màn hình cảm ứng. Khi người dùng thể hiện sự quan tâm hoặc không còn quan tâm, một InterestEvent sẽ được kích hoạt trên mục tiêu, có các thao tác mặc định trong trường hợp cửa sổ bật lên – hiện và ẩn cửa sổ bật lên.

Tính toàn vẹn dựa trên chữ ký

Tính năng này cung cấp cho nhà phát triển web một cơ chế để xác minh nguồn gốc của các tài nguyên mà họ phụ thuộc vào, tạo ra nền tảng kỹ thuật để tin tưởng vào các phần phụ thuộc của một trang web. Nói tóm lại: các máy chủ có thể ký các phản hồi bằng một cặp khoá Ed25519 và nhà phát triển web có thể yêu cầu tác nhân người dùng xác minh chữ ký bằng một khoá công khai cụ thể. Điều này giúp bổ sung cho các quy trình kiểm tra dựa trên URL do Chính sách bảo mật nội dung cung cấp (một mặt) và các quy trình kiểm tra dựa trên nội dung của Tính toàn vẹn của tài nguyên phụ (mặt khác).

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.

Không dùng các phương thức truy xuất của Thông tin về ngôn ngữ và khu vực theo chuẩn quốc tế

Intl Locale Info API là một đề xuất ECMAScript TC39 Giai đoạn 3 nhằm nâng cao đối tượng Intl.Locale bằng cách hiển thị thông tin về ngôn ngữ, chẳng hạn như dữ liệu tuần (ngày đầu tiên trong tuần, ngày bắt đầu cuối tuần, ngày kết thúc cuối tuần, số ngày tối thiểu trong tuần đầu tiên) và chu kỳ giờ theo hướng văn bản được dùng trong ngôn ngữ. Chrome đã triển khai một giải pháp trong Chrome 99, tuy nhiên, đề xuất này đã thay đổi để di chuyển một số getter sang các hàm. Chúng ta cần xoá các phương thức truy xuất đã ngừng hoạt động và khởi chạy lại các hàm đã đổi tên.

Bản phát hành Chrome này loại bỏ 3 tính năng.

Xoá phương thức navigator.xr.supportsSession không dùng nữa

navigator.xr.supportsSession đã được thay thế trong quy cách WebXR bằng phương thức navigator.xr.isSessionSupported vào tháng 9 năm 2019 sau khi nhận được ý kiến phản hồi về hình dạng API từ TAG. Kể từ đó, API này đã được đánh dấu là không dùng nữa trong Chrome, tạo ra một cảnh báo trên bảng điều khiển để chuyển hướng nhà phát triển đến API mới cập nhật. Lệnh gọi này có mức sử dụng rất thấp và tất cả các khung chính được dùng để tạo nội dung WebXR đều đã được xác nhận là đã cập nhật để sử dụng lệnh gọi mới hơn.

Xoá tài sản NavigateEvent canTransition

Trong Chrome 108, phương thức transitionWhile() và thuộc tính canTransition của NavigateEvent đã được thay thế bằng phương thức intercept() và thuộc tính canIntercept mới. Tại thời điểm đó, phương thức transitionWhile() đã bị xoá. Tuy nhiên, chúng tôi quên xoá thuộc tính canTransition: thay vào đó, chúng tôi để lại thuộc tính này làm bí danh cho canIntercept. Trong Chrome 135, chúng tôi sẽ khắc phục vấn đề đó và xoá canTransition. Bạn có thể thay thế mọi trường hợp sử dụng canTransition bằng canIntercept mà không có thay đổi nào về hành vi.

Xoá giới hạn WebGPU maxInterStageShaderComponents

Chúng tôi sẽ xoá giới hạn maxInterStageShaderComponents do một số yếu tố kết hợp:

  • 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ỏ về 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 maxInterStageShaderVariables limit.
  • Đơn giản hoá: Việc xoá maxInterStageShaderComponents giú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 hạn mức riêng biệt (cả hai đều áp dụng đồng thời nhưng có sự khác biệt nhỏ), họ có thể tập trung vào maxInterStageShaderVariables toàn diện và có tên gọi phù hợp hơn.