Chrome 135 beta

Ngày phát hành: 5 tháng 3 năm 2025

Trừ khi có ghi chú khác, các thay đổi sau đây sẽ áp dụng cho bản phát hành mới nhất của kênh beta Chrome dành 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 đang ở giai đoạn thử nghiệm 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 dành 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í neo ghi nhớ độ lệch cuộn

Thêm tính năng hỗ trợ cho khái niệm độ lệch cuộn được ghi nhớ. Khi một phần tử được định vị có neo mặc định và được liên kết với neo này ở một cạnh và với khối chứa ban đầu ở cạnh còn lại, thì độ lệch cuộn sẽ được tính đến khi xác định kích thước 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ị (sử dụng position-area) cho phần tử được neo khi cuộn tài liệu ở một độ lệch cuộn nhất định. Để tránh bố cục (đổi kích thước phần tử) mỗi khi cuộn tài liệu, trình duyệt sử dụng giá trị bù cuộn đã ghi nhớ thay vì luôn sử dụng giá trị bù cuộn hiện tại. Độ lệch cuộn được ghi nhớ được cập nhật tại điểm tính toán lại neo, là vị trí mà phần tử được định vị hiển thị ban đầu hoặc khi bạn chọn một tuỳ chọn vị trí khác (position-try-fallbacks).

Tính chất trơ của CSS

Việc đặt một phần tử ở trạng thái không hoạt động sẽ ảnh hưởng đến việc liệu phần tử đó có thể được lấy làm 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. Điều này cũng ảnh hưởng đến việc thành phần hiển thị trong cây hỗ trợ tiếp cận hay không. Thuộc tính interactivity chỉ định liệu một phần tử và các phần tử con cây phẳng (bao gồm cả các dòng văn bản) có bất động 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

Thuộc tính CSS overflow-inlineoverflow-block cho phép bạn đặt chế độ tràn trong cùng dòng và hướng khối tương ứng với chế độ ghi. Trong chế độ ghi ngang, overflow-inline liên kết đến overflow-x, trong khi ở chế độ ghi dọc, overflow-inline liên kết đến overflow-y.

Các hàm liên quan đến dấu ​abs()sign() ​tính toán nhiều hàm liên quan đến dấu của đối số.

Thuộc tính dynamic-range-limit

Cho phép một 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 dạng tự do thích ứng trong thuộc tính clip-path. Hàm này cho phép bạn 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

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 mảnh được tạo. Cụ thể, điều này chỉ giới hạn ở các kiểu không ảnh hưởng đến bố cục và do đó có thể được áp dụng sau bố cục.

Phần tử mô phỏng ::scroll-button()

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 nút 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 một lượng nhất định. Khi không thể cuộn theo hướng đó, các nút này sẽ bị tắt (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 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 cuộn. Các phần tử giả này cho phép bạn tạo một tập hợp các điểm đánh dấu có thể lấy tiêu điểm cho tất cả các mục liên kết trong vùng chứa cuộn.

Định kiểu phần tử giả lồng nhau

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, tính năng hỗ trợ được xác định cho: ::before::marker::after::marker với ::column::scroll-marker sẽ được hỗ trợ trong tương lai.

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

Có một ngoại lệ đối với đường liên kết tự liên kết, trong đó các đường liên kết đến các trang của chính trang web có thể được định kiểu là :visited ngay cả khi người dùng chưa từng nhấp vào các đườ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ường hợp miễn trừ này chỉ được bật trong các khung cấp cao nhất hoặc khung con có cùng nguồn gốc với khung cấp cao nhất. Các 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 trang con nào, do đó, không có thông tin mới nào được tiết lộ. Đây là một ngoại lệ do cộng đồng yêu cầu để 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

Các ký hiệu hàm progress(), media-progress()container-progress() biểu thị khoảng cách tương ứng của một giá trị nhất định (giá trị tiến trình) từ một giá trị (giá trị bắt đầu tiến trình) đến một giá trị khác (giá trị kết thúc tiến trình). Các hàm này cho phép vẽ tỷ lệ tiến trình từ các hàm toán học, tính năng nội dung đa phương tiện và tính năng vùng chứa tương ứng.

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 thể 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ể.

Các giá trị này là cần thiết khi xây dựng trải nghiệm web cạnh đến cạnh hiệu quả.

API web

Thêm tính năng hỗ trợ MediaStreamTrack vào API lời nói trên web

Thêm tính năng hỗ trợ MediaStreamTrack vào API lời nói trên web. Web Speech API là một API tiêu chuẩn web cho phép nhà phát triển tích hợp tính năng nhận dạng và tổng hợp lời nói vào 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 API lời nói trên web để tạo phụ đề cho 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

Tiếp nối 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á bộ nhớ (trang web cấp cao nhất, nguồn gốc khung và boolean có-tổ-cụ-trên-nhiều-trang-web), ngoại trừ các thao tác điều hướng cấp cao nhất sẽ 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 xác nhận rằng mọi tài nguyên thuộc một loại nhất định 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 lệnh 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

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

Điều phối sự kiện nhấp chuột đến con trỏ đã chụp

Nếu một con trỏ được chụp trong khi sự kiện pointerup đang được gửi, thì sự kiện click sẽ được gửi đến mục tiêu đã chụp thay vì mục tiêu gốc chung gần nhất của sự kiện pointerdownpointerup theo thông số kỹ thuật của Sự kiện trên giao diện người dùng. Đối với các con trỏ chưa được chụp, mục tiêu click sẽ 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.

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

Lược đồ khoá bộ nhớ đệm HTTP của Chrome đã được cập nhật để bao gồm một 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 thao tác điều hướng cấp cao nhất. Cụ thể, việc 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 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à được trang tải để suy luận 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 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.

Tính năng ngăn chặn 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 thao tác điều hướng cấp cao nhất và chặn các bản nâng cấp HSTS cho yêu cầu 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 của phương thức gọi: thuộc tính commandcommandfor

Các thuộc tính commandcommandfor trên phần tử <button> cho phép bạn gán 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 để tương tác. Các nút có thuộc tính commandforcommand sẽ – khi được nhấp, chạm hoặc thực thi bằng thao tác nhấn phím – 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 gợi ý rằng trình duyệt sẽ thông báo cho ứng dụng thanh toán đã đăng ký về một khoản thanh toán đẩy đang chờ xử lý.

Thuộc tính NavigateEvent sourceElement

Khi một thành phần (Element) khởi tạo thao tác điều hướng (ví dụ: lượt nhấp vào đường liên kết hoặc gửi biểu mẫu), thuộc tính sourceElement trên NavigateEvent sẽ trả về thành phần khởi tạo.

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

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

API Web Speech trên thiết bị

Tính năng này bổ sung tính năng hỗ trợ nhận dạng lời nói trên thiết bị vào API lời nói trên web, cho phép các trang web đảm bảo rằng không có âm thanh hoặc lời nói được chép lời nào được gửi đến dịch vụ của bên thứ ba để xử lý. Các trang web có thể truy vấn khả năng sử dụng tính năng nhận dạng lời nói trên thiết bị cho một số ngôn ngữ cụ thể, nhắc người dùng cài đặt các tài nguyên cần thiết để nhận dạng lời nói trên thiết bị và chọn giữa tính năng nhận dạng lời nói trên thiết bị hoặc trên đám mây nếu cần.

URL ứng dụng của Worker dịch vụ bỏ qua các thay đổi history.pushState

Sửa đổi thuộc tính Client.url của worker 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 được dùng làm URL tạo của tài liệu HTML, bỏ qua các 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 bảo mật và quyền riêng tư cho nhà phát triển. Việc căn chỉnh này với các phần tử neo HTML đả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 đượ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 được mã hoá WebRTC được truyền qua RTCPeerConnection. Dấu thời gian trong câu hỏi là:

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

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 của hai thuộc tính này sẽ được thay đổi thành double, giúp nhà phát triển có nhiều quyền kiểm soát hơn đối với giá trị. 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

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

Tài liệu 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 bfcache bất kể còn bao nhiêu thời gian. Trình duyệt sẽ quyết định thời điểm gửi.

API 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ị trì hoãn đã được gửi hay chưa. Khi gửi thành công, trình duyệt sẽ bỏ qua toàn bộ nội dung phản hồi, 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 bản dùng thử mới về nguồn gốc sau đây.

Lệnh gọi quan tâm

Tính năng này sẽ thêm thuộc tính interesttarget vào các phần tử <button><a>. Thuộc tính interesttarget thêm hành vi "quan tâm" vào phần tử, chẳng hạn như khi người dùng "cho thấy sự quan tâm" trong phần tử, các hành động sẽ được kích hoạt trên phần tử mục tiêu. Các hành động có thể bao gồm những việc như hiển thị 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 "cho thấy 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ử, nhấn phím tắt đặ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 sự quan tâm xuất hiện hoặc biến 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 thị 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 nền tảng kỹ thuật để tin tưởng vào các phần phụ thuộc của trang web. Tóm lại: máy chủ có thể ký 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 bổ sung hữu ích cho các bước kiểm tra dựa trên URL do Chính sách bảo mật nội dung cung cấp, cũng như các bước kiểm tra dựa trên nội dung của tính năng Tính toàn vẹn của tài nguyên phụ.

Ngừng sử dụng và xoá

Phiên bản Chrome này giới thiệu các tính năng ngừng hoạt động và bị xoá được liệt kê bên dưới. Hãy truy cập vào ChromeStatus.com để xem danh sách các tính năng dự kiến ngừng hoạt động, các tính năng hiện đã ngừng hoạt động 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 nữa.

Ngừng sử dụng phương thức getter của Thông tin ngôn ngữ quốc tế

Intl Locale Info API là đề xuất ECMAScript TC39 Giai đoạn 3 để 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, ngày tối thiểu trong tuần đầu tiên) và chu kỳ giờ theo hướng văn bản được sử dụng trong ngôn ngữ. Chrome đã triển khai trong Chrome 99, tuy nhiên, đề xuất đã thay đổi để di chuyển một số phương thức getter sang các hàm. Chúng ta cần xoá các phương thức getter không dùng nữa và chạy lại các hàm đã đổi tên.

Bản phát hành Chrome này xoá 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 thông số kỹ thuật WebXR bằng phương thức navigator.xr.isSessionSupported vào tháng 9 năm 2019 sau khi nhận được 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 cảnh báo bảng điều khiển chuyển hướng nhà phát triển đến API đã cập nhật. Mức sử dụng lệnh gọi này rất thấp và tất cả các khung chính dùng để tạo nội dung WebXR đều được xác nhận là đã được cập nhật để sử dụng lệnh gọi mới hơn.

Xoá thuộc tính 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 ta đã quên xoá thuộc tính canTransition: thay vào đó, chúng ta để thuộc tính này làm bí danh cho canIntercept. Trong Chrome 135, chúng tôi sẽ khắc phục lỗi đó và xoá canTransition. Bạn có thể thay thế mọi hoạt động sử dụng canTransition bằng canIntercept mà không làm thay đổi hành vi.

Xoá giới hạn WebGPU maxInterStageShaderComponents

Giới hạn maxInterStageShaderComponents đang bị xoá do nhiều yếu tố kết hợp:

  • Tính năng dự phòng 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 chương trình đổ bóng.
  • Sự khác biệt nhỏ: Mặc dù có một chút khác biệt trong cách tính toán hai giới hạn này, nhưng những khác biệt này là nhỏ 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 giới hạn 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 được đặt tên và toàn diện hơn.