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-inline
và overflow-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 chữ ký: abs()
và sign()
Các hàm liên quan đến dấu abs()
và 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
và ::scroll-marker-group
Thêm ::scroll-marker
và ::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
và ::after::marker
với
::column::scroll-marker
sẽ được hỗ trợ trong tương lai.
Phân vùng nhật ký đường liên kết :visited
Để 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()
và 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 pointerdown
và pointerup
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 command
và commandfor
Các thuộc tính command
và commandfor
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 commandfor
và command
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.
Liên kết rel="facilitated-payment"
để hỗ trợ các khoản thanh toán không qua trung gian
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 rel
và relList
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 rel
và relList
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 loaded
và total
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>
và <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àomaxInterStageShaderVariables
được đặt tên và toàn diện hơn.