Chrome 138 beta

Opublikowano: 28 maja 2025 r.

O ile nie zaznaczono inaczej, te zmiany dotyczą najnowszej wersji beta Chrome na Androida, ChromeOS, Linuksa, macOS i Windows. Więcej informacji o funkcjach wymienionych tutaj znajdziesz w podanych linkach lub na liście na ChromeStatus.com. Od 28 maja 2025 r. Chrome 138 jest w wersji beta. Najnowszą wersję możesz pobrać na komputerze na stronie Google.com lub na Androidzie w Sklepie Google Play.

CSS i interfejs użytkownika

Ta wersja zawiera 6 nowych funkcji CSS i interfejsu użytkownika.

Słowo kluczowe rozmiaru CSS stretch

Słowo kluczowe właściwości rozmiaru CSS (np. width i height), które umożliwia elementom powiększanie się tak, aby dokładnie wypełniały dostępną przestrzeń w bloku zawierającym. Jest podobne do 100%, ale wynikowy rozmiar jest stosowany do pola marginesu elementu, a nie do pola wskazanego przez box-sizing. Użycie tego słowa kluczowego umożliwia elementowi zachowanie marginesów przy jednoczesnym zachowaniu jak największego rozmiaru.

Funkcje związane ze znakiem abs() i sign() obliczają różne funkcje związane ze znakiem argumentu.

Zmienna środowiskowa CSS dla skali czcionki na poziomie systemu operacyjnego

Udostępnia preferowaną skalę czcionki użytkownika w CSS. Obecnie strona nie może wykryć, czy użytkownik zmienił preferowany rozmiar czcionki w ustawieniach systemu operacyjnego. Ta zmienna środowiskowa CSS będzie odzwierciedlać skalę wybraną przez użytkownika.

CSS sibling-index() i sibling-count()

Funkcje sibling-index() i sibling-count() mogą być używane jako liczby całkowite w wartościach właściwości CSS, aby stylizować element na podstawie jego pozycji wśród elementów równorzędnych lub łącznej liczby elementów równorzędnych. Te funkcje mogą być używane bezpośrednio jako wartości całkowite, ale bardziej interesujące jest ich użycie w wyrażeniach calc().

li {
  animation-delay: calc(0.1s * sibling-index());
}

Notacja funkcjonalna postępu interpolacji: funkcja CSS progress()

Notacja funkcjonalna progress() to funkcja matematyczna, która zwraca wartość <number> reprezentującą pozycję jednego obliczenia (wartość postępu) między 2 innymi obliczeniami (wartość początkowa i końcowa postępu).

Interfejs Viewport Segments Enumeration API

Interfejs Viewport Segments API umożliwia programistom dostosowanie układu strony do urządzeń składanych. Segmenty viewportu określają położenie i wymiary logicznie oddzielonego regionu viewportu. Segmenty viewportu są tworzone, gdy viewport jest dzielony przez co najmniej 1 funkcję sprzętową (np. zagięcie lub zawias między oddzielnymi wyświetlaczami), która działa jako separator. Segmenty to regiony viewportu, które programista może traktować jako logicznie odrębne.

Interfejsy Web API

Dodanie obsługi metadanych orientacji klatek wideo do WebCodecs

Wprowadza wartości rotation: int i flip: bool do różnych interfejsów związanych z wideo w WebCodecs, aby programiści mogli pracować ze źródłami klatek, które mają orientację (np. aparaty na Androidzie i niektóre media). Interfejs VideoFrame umożliwia tworzenie ramek wideo z dowolnym obrotem i odbiciem lustrzanym, a także dostęp do tych informacji w obiekcie VideoFrame. Obiekt VideoDecoderConfig zawiera pola rotation i flip, które są automatycznie emitowane w dekodowanych obiektach VideoFrame. Klasa VideoEncoder zawiera mechanizmy przekazywania informacji o obrocie i odbiciu lustrzanym z encode() do VideoDecoderConfig emitowanego w ramach EncodedVideoChunkMetadata. Jeśli funkcja encode() zostanie wywołana z ramkami o różnej orientacji, zostanie zgłoszony wyjątek niekrytyczny. Metoda configure() umożliwia zresetowanie dozwolonej orientacji.

Interfejs API do raportowania awarii: is_top_level i visibility_state

Ta funkcja dodaje pola tekstowe is_top_level i visibility_state do treści interfejsu Crash Reporting API, która jest wysyłana do domyślnego punktu końcowego raportowania w przypadku raportów o awariach.

Zastępowanie znaków < i > w atrybutach podczas serializacji

Zastępowanie znaków < i > w wartościach atrybutów podczas serializacji. Zmniejsza to ryzyko ataków XSS, które występują, gdy wartość atrybutu jest interpretowana jako token tagu otwierającego po serializacji i ponownym przeanalizowaniu.

Zasady dotyczące integralności skryptów

Subresource-Integrity (SRI) umożliwia programistom upewnienie się, że zasoby, które chcą wczytać, są rzeczywiście tymi, które wczytują. Obecnie nie ma jednak sposobu, aby programiści mogli mieć pewność, że wszystkie ich skrypty są weryfikowane za pomocą SRI. Nagłówek Integrity-Policy umożliwia programistom stwierdzenie, że każdy zasób danego typu musi zostać sprawdzony pod kątem integralności. Jeśli zasób tego typu zostanie wczytany bez metadanych integralności, próba się nie powiedzie i zostanie wygenerowany raport o naruszeniu.

Przewidywalny zgłoszony limit miejsca na dane

Zgłaszanie przewidywalnego limitu miejsca na dane z interfejsu Estimate API w StorageManager w przypadku witryn, które nie mają uprawnień do nieograniczonego miejsca na dane. Tryb przeglądania użytkownika można wykryć za pomocą zgłoszonego limitu miejsca na dane, ponieważ ilość dostępnego miejsca na dane jest znacznie mniejsza w trybie incognito niż w trybie normalnym.

Jest to rozwiązanie, które uniemożliwia wykrywanie trybu przeglądania użytkownika za pomocą interfejsu Storage API przez zgłaszanie sztucznego limitu, równego sumie wykorzystania i mniejszej z tych wartości: 10 GiB lub pojemność dysku zaokrąglona w górę do najbliższego 1 GiB, we wszystkich trybach przeglądania w przypadku witryn z ograniczonymi uprawnieniami do miejsca na dane. Nie będzie to miało wpływu na witryny z uprawnieniami do nieograniczonego miejsca na dane. Nie będzie to też miało wpływu na egzekwowany limit.

Zdarzenie pushsubscriptionchange po ponownej subskrypcji

Wywołanie zdarzenia pushsubscriptionchange w service workerach, gdy źródło, dla którego w przeszłości istniała subskrypcja push, ale które zostało cofnięte z powodu zmiany uprawnień (z przyznanych na odrzucone/domyślne), ponownie otrzyma uprawnienia do wysyłania powiadomień. Zdarzenie zostanie wywołane z pustymi wartościami oldSubscription i newSubscription.

Reguły spekulacyjne: dodanie prefetchCache i prerenderCache do nagłówka Clear-Site-Data

2 nowe wartości nagłówka Clear-Site-Data, które pomagają programistom w czyszczeniu pamięci podręcznej wstępnego renderowania i pobierania z wyprzedzeniem: prefetchCache i prerenderCache. Można je wysyłać w dowolnych żądaniach i nie muszą być wysyłane w żądaniu dokumentu (np. mogą być zwracane w odpowiedziach na wywołania interfejsu API dodawania do koszyka, logowania i wylogowywania, aby wyczyścić spekulacje dotyczące zmiany stanu).

Reguły spekulacyjne: pole target_hint

Rozszerza składnię reguł spekulacyjnych, aby umożliwić programistom określenie pola target_hint. To pole zawiera wskazówkę wskazującą docelowy element nawigacyjny, w którym zostanie aktywowana wstępnie renderowana strona. Gdy jako wskazówka zostanie określona wartość _blank, wstępnie renderowana strona może zostać aktywowana w przypadku elementu nawigacyjnego otwartego przez window.open(). Pole nie jest obsługiwane w przypadku pobierania z wyprzedzeniem.

Zasada Strict Same Origin w przypadku interfejsu Storage Access API

Dostosowuje semantykę interfejsu Storage Access API, aby ściśle przestrzegać zasady Same Origin w zakresie bezpieczeństwa. Oznacza to, że domyślnie użycie document.requestStorageAccess() w ramce dołącza pliki cookie tylko do żądań do źródła elementu iframe (a nie do witryny).

Interfejs Summarizer API

Interfejs JavaScript API do tworzenia podsumowań tekstu wejściowego, oparty na modelu językowym AI. Oczekuje się, że przeglądarki i systemy operacyjne będą miały dostęp do modelu językowego. Udostępniając ten wbudowany model, unikamy sytuacji, w której każda witryna musi pobierać własny model językowy o rozmiarze wielu gigabajtów lub wysyłać tekst wejściowy do interfejsów API innych firm. Interfejs Summarizer API udostępnia interfejs API wysokiego poziomu do komunikacji z modelem językowym w celu podsumowywania danych wejściowych w różnych przypadkach użycia w sposób niezależny od konkretnego modelu językowego. Dostępna jest zasada przedsiębiorstwa (GenAILocalFoundationalModelSettings), która umożliwia wyłączenie pobierania modelu bazowego, co spowoduje, że ten interfejs API będzie niedostępny.

Więcej informacji znajdziesz w artykule Generowanie zwięzłych podsumowań za pomocą wbudowanej AI.

Interfejs Language Detector API

Interfejs JavaScript API do wykrywania języka używanego w danym tekście z określonym poziomem ufności. Jest to ważne uzupełnienie tłumaczenia, które można stosować w połączeniu z interfejsem Translator API. Na przykład możesz pobrać dane wejściowe użytkownika w nieznanym języku, określić jego język, a następnie przetłumaczyć go na określony język docelowy. Chociaż przeglądarki często mają już funkcje wykrywania języka, ten interfejs API udostępnia te same możliwości programistom stron internetowych za pomocą interfejsu JavaScript API, uzupełniając interfejs Translation API.

Dostępna jest zasada przedsiębiorstwa (GenAILocalFoundationalModelSettings), która umożliwia wyłączenie pobierania modelu bazowego, co spowoduje, że ten interfejs API będzie niedostępny.

Więcej informacji znajdziesz w artykule Wykrywanie języka za pomocą wbudowanej AI.

Interfejs Translator API

Interfejs JavaScript API, który umożliwia dodawanie funkcji tłumaczenia języka do stron internetowych. Chociaż przeglądarki coraz częściej oferują użytkownikom tłumaczenie języka, takie funkcje mogą być również przydatne dla programistów stron internetowych. Dotyczy to zwłaszcza sytuacji, w których wbudowane w przeglądarkę funkcje tłumaczenia nie mogą pomóc, np. w przypadku usług na żywo i interaktywnych. Dostępna jest zasada przedsiębiorstwa (GenAILocalFoundationalModelSettings), która umożliwia wyłączenie pobierania modelu bazowego, co spowoduje, że ten interfejs API będzie niedostępny.

Więcej informacji znajdziesz w artykule Tłumaczenie za pomocą wbudowanej AI.

Rozszerzenia zakresu aplikacji internetowych

Dodaje pole manifestu aplikacji internetowej "scope_extensions", które umożliwia aplikacjom internetowym rozszerzenie zakresu na inne źródła. Umożliwia to prezentowanie witryn, które kontrolują wiele subdomen i domen najwyższego poziomu, jako pojedynczej aplikacji internetowej. Wymaga to, aby wymienione źródła potwierdziły powiązanie z aplikacją internetową za pomocą pliku konfiguracyjnego .well-known/web-app-origin-association.

Web Serial over Bluetooth na Androidzie

Ta funkcja umożliwia stronom internetowym i aplikacjom internetowym łączenie się z portami szeregowymi przez Bluetooth na urządzeniach z Androidem. Chrome na Androidzie obsługuje teraz interfejs Web Serial API przez Bluetooth RFCOMM. Obecne zasady przedsiębiorstwa (DefaultSerialGuardSetting, SerialAllowAllPortsForUrls, SerialAllowUsbDevicesForUrls, SerialAskForUrls i SerialBlockedForUrls) na innych platformach są włączone w stanach `future_on` na Androidzie. Po włączeniu tej funkcji zostaną włączone wszystkie zasady z wyjątkiem SerialAllowUsbDevicesForUrls. Zasada SerialAllowUsbDevicesForUrls zostanie włączona w przyszłej wersji po tym, jak Android zapewni obsługę portów szeregowych przewodowych na poziomie systemu.

Wycofania i usunięcia

Ta wersja Chrome wprowadza te wycofania i usunięcia. Listy planowanych wycofań, bieżących wycofań i poprzednich usunięć znajdziesz na stronie ChromeStatus.com.

Ta wersja Chrome wycofuje 2 funkcje.

Wycofanie asynchronicznego usuwania zakresu w przypadku rozszerzeń Media Source

Standard Media Source już dawno został zmieniony, aby uniemożliwić niejednoznacznie zdefiniowane zachowanie związane z asynchronicznym usuwaniem zakresu:

  • SourceBuffer.abort() nie przerywa już operacji SourceBuffer.remove().
  • Ustawienie MediaSource.duration nie może już obcinać aktualnie buforowanych multimediów.

W obu tych przypadkach będą teraz zgłaszane wyjątki.

Usunięcie rozwiązania zastępczego SwiftShader

Automatyczne zastępowanie WebGL przez programowy mechanizm renderowania SwiftShader zostało wycofane. Zamiast tego tworzenie kontekstu WebGL będzie się nie powodzić. Zrobiliśmy to z 2 głównych powodów:

  1. SwiftShader stanowi duże zagrożenie dla bezpieczeństwa ze względu na kod JIT działający w procesie GPU Chromium.
  2. Użytkownicy mają złe wrażenia, gdy przechodzą z WebGL opartego na wydajnym procesorze graficznym na implementację opartą na procesorze. Użytkownicy nie mają kontroli nad tym zachowaniem i trudno je opisać w raportach o błędach.

W okresie wycofywania w konsoli Narzędzi deweloperskich w Chrome będzie się wyświetlać ostrzeżenie, gdy zostanie utworzony kontekst WebGL i będzie on obsługiwany przez SwiftShader. Przekazanie --enable-unsafe-swiftshader spowoduje usunięcie tego ostrzeżenia.