Chrome 133

Data wydania stabilnej wersji: 4 lutego 2025 r.

O ile nie zaznaczono inaczej, poniższe zmiany dotyczą wersji 133 przeglądarki Chrome w kanale stabilnym na Androida, ChromeOS, Linuxa, macOS i Windowsa.

HTML i DOM

Wartość podpowiedzi atrybutu wyskakującego okienka

Interfejs API popover określa zachowanie dla 2 wartości atrybutu popover: automatyczne i ręczne. Ta funkcja opisuje trzecią wartość, popover=hint. Wskazówki, które są najczęściej kojarzone z funkcją „wyskakującego okienka”, działają nieco inaczej. Różnica polega głównie na tym, że podczas otwierania zagnieżdżonych grup wyskakujących okienek podpowiedź jest podrzędna opcji automatycznej. Oznacza to, że można otworzyć niepasujące do siebie wyskakujące okienko z wskazówką, gdy otwarty jest już stos automatycznych wyskakujących okienek.

Przykładem kanonicznego jest otwarty selektor <select> (popover=auto) i wyświetlane okienko informacji (popover=hint), które pojawia się po najechaniu kursorem. To działanie nie powoduje zamknięcia selektora <select>.

Śledzenie błędu #1416284 | Informacja na stronie ChromeStatus.com

Ulepszenia dotyczące okna wyskakującego i położenia kotwicy

Dodaje imperatywny sposób na ustawienie relacji wywołania między wyskakującymi okiennikami za pomocą popover.showPopover({source}). Umożliwia relacje wywołującego, aby utworzyć domyślne odwołania do elementów kotwicy.

Śledzenie błędu #364669918 | Wpis na stronie ChromeStatus.com

Wyskakujące okienko zagnieżdżone w wywołaniu nie powinno go ponownie wywoływać

W tym przypadku kliknięcie przycisku powoduje prawidłowe włączenie wyskakującego okienka, ale kliknięcie samego okienka nie powoduje jego zamknięcia.

<button popovertarget=foo>Activate
  <div popover id=foo>Clicking me shouldn't close me</div>
</button>

Dotychczas miało to miejsce, ponieważ kliknięcie wyskakującego okienka powodowało przejście do przycisku <button> i aktywowało invoker, który zamykał wyskakujące okienko. Teraz jest to oczekiwane zachowanie.

Śledzenie błędu #https://crbug.com/379241451 | Wpis na stronie ChromeStatus.com

CSS

Zaawansowana funkcja attr() CSS

Wprowadza rozszerzenie attr() określone w CSS Level 5, które umożliwia stosowanie typów innych niż <string> we wszystkich właściwościach CSS (oprócz dotychczasowego obsługiwania zawartości pseudoelementu).

MDN attr() | Śledzenie błędu #246571 | Wpis na ChromeStatus.com | Specyfikacja

Pseudoklasa CSS :open

Pseudoklasa :open odpowiada <dialog><details>, gdy elementy są otwarte, oraz <select><input>, gdy są w trybie, w którym mają selektor i jest on widoczny.

Śledzenie błędu #324293874 | Wpis na stronie ChromeStatus.com | Specyfikacja

Zapytania do kontenera stanu przewijania w CSS

Używaj zapytań dotyczących kontenerów, aby nadawać styl potomkom kontenerów na podstawie ich stanu przewijania.

Kontenery zapytań to albo kontenery z paskiem przewijania, albo elementy, na które wpływa pozycja kursora w kontenerze z paskiem przewijania. Możesz wysyłać zapytania o stany:

  • stuck: przyklejony kontener jest przytwierdzony do jednej z krawędzi pola przewijania.
  • snapped: wyrównany do przesuwania kontener jest obecnie przyciągnięty poziomo lub pionowo.
  • scrollable: określa, czy kontener z paskiem przewijania można przewijać w kierunku zapytanym.

Nowy typ kontenera: scroll-state umożliwia wysyłanie zapytań do kontenerów.

Śledzenie błędu #40268059 | Wpis na stronie ChromeStatus.com | Specyfikacja

CSS text-box, text-box-trim i text-box-edge

Aby uzyskać optymalny balans treści tekstowych, właściwości text-box-trim i text-box-edge oraz właściwość tekst-box-shorthand umożliwiają dokładniejsze kontrolowanie wyrównania pionowego tekstu.

Właściwość text-box-trim określa, które krawędzie mają zostać przycięte (górna lub dolna), a właściwość text-box-edge określa, jak ma być przycięta krawędź.

Te właściwości umożliwiają dokładne kontrolowanie odstępów pionowych za pomocą wymiarów czcionki.

Śledzenie błędu #1411581 | Wpis na stronie ChromeStatus.com | Specyfikacja

Interfejsy Web API

Animation.overallProgress

Zapewnia programistom wygodną i spójną reprezentację postępu animacji w poszczególnych iteracjach niezależnie od charakteru jej osi czasu. Bez właściwości overallProgress musisz ręcznie obliczyć, jak daleko posunęła się animacja, biorąc pod uwagę liczbę iteracji animacji oraz to, czy currentTime animacji jest wyrażony jako procent całkowitego czasu (jak w przypadku animacji sterowanych przewijaniem) czy jako bezwzględna ilość czasu (jak w przypadku animacji sterowanych czasem).

Śledzenie błędu #40914396 | Wpis na stronie ChromeStatus.com | Specyfikacja

Metoda pause() obiektu Atomics

Dodaje metodę pause() do obiektu przestrzeni nazw Atomics, aby zasugerować procesorowi, że bieżący kod wykonuje blokadę spinlocka.

ChromeStatus.com entry | Spec

Raportowanie haszowania przez dostawców usług dla twórców w przypadku skryptów

Z powodów bezpieczeństwa złożone aplikacje internetowe często muszą śledzić pobierane przez siebie zasoby podrzędne.

W szczególności nadchodzące standardy branżowe i sprawdzone metody (np. PCI-DSS w wersji 4) wymagają, aby aplikacje internetowe przechowywały spis wszystkich skryptów, które pobierają i uruchamiają.

Ta funkcja opiera się na interfejsie CSP i Reporting API, aby zgłaszać adresy URL i sumy kontrolne (w przypadku CORS/same-origin) wszystkich zasobów skryptu, które wczytuje dokument.

Śledzenie błędu #377830102 | Wpis na stronie ChromeStatus.com

Przenoszenie z zachowaniem stanu DOM

Dodaje prymityw DOM (Node.prototype.moveBefore), który umożliwia przenoszenie elementów w drzewie DOM bez resetowania ich stanu.

Podczas przenoszenia zamiast usuwania i wstawiania zachowane zostaną takie właściwości:

  • Elementy <iframe> pozostają załadowane.
  • Aktywny element pozostaje w centrum uwagi.
  • Wyskakujące okienka, okna pełnoekranowe i okna modalne pozostają otwarte.
  • Przejścia i animacja CSS będą nadal działać.

Informacja na stronie ChromeStatus.com

Wyświetl atrybut attributionsrc w elementach <area>.

Dopasowuje wyświetlanie atrybutu attributionsrc w elementach <area> do dotychczasowego sposobu przetwarzania tego atrybutu, nawet jeśli nie było ono wcześniej widoczne.

Ponadto warto obsługiwać ten atrybut w przypadku elementu <area>, ponieważ jest to element nawigacji najwyższego rzędu, a Chrome obsługuje już ten atrybut w przypadku elementów <a>window.open.

Śledzenie błędu #379275911 | Wpis na stronie ChromeStatus.com | Specyfikacja

Interfejs FileSystemObserver

Interfejs FileSystemObserver powiadamia witryny o zmianach w systemie plików. Witryny obserwują zmiany w plikach i katalogach, do których użytkownik wcześniej przyznał uprawnienia, na urządzeniu lokalnym użytkownika lub w systemie plików sekcji (znanym też jako prywatny system plików Origin) i są powiadamiane o podstawowych informacjach o zmianach, takich jak typ zmiany.

Śledzenie błędu #40105284 | Wpis na stronie ChromeStatus.com

Wiele map importu

Mapy importu muszą być wczytane przed każdym modułem ES i w każdym dokumencie może być tylko jedna mapa importu. To sprawia, że są one niestabilne i w przypadku rzeczywistych scenariuszy mogą być powolne: każdy moduł wczytywany przed nimi powoduje błąd całej aplikacji, a w przypadku aplikacji z wiele modułami stają się one dużym zasobem blokującym, ponieważ najpierw musi zostać załadowana cała mapa wszystkich możliwych modułów.

Ta funkcja umożliwia łączenie wielu map importu na dokument, łącząc je w sposób spójny i deterministyczny.

Informacja na stronie ChromeStatus.com

Nagłówki dostępu do miejsca na dane

Udostępnia uwierzytelnionym treściom embedowanym alternatywną metodę włączenia plików cookie bez partycji. Te nagłówki wskazują, czy niepartycjonowane pliki cookie są (lub mogą być) uwzględnione w danym żądaniu sieciowym, i pozwalają serwerom aktywować już przyznane im uprawnienia dostępu do pamięci. Alternatywny sposób aktywacji uprawnienia „dostęp do pamięci” umożliwia korzystanie z zasobów innych niż iframe i może skrócić czas oczekiwania na zalogowane wstawienie.

Śledzenie błędu #329698698 | Wpis na stronie ChromeStatus.com | Specyfikacja

Obsługa tworzenia ClipboardItem za pomocą Promise<DOMString>

Konstruktor ClipboardItem, który jest wejściem do asynchronicznej metody schowka write(), akceptuje teraz w swoim konstruktorze wartości ciągu znaków oprócz obiektów Blob. ClipboardItemData może być Blobem, ciągiem znaków lub obietnicą, która zwraca Bloba lub ciąg znaków.

Śledzenie błędu #40766145 | Wpis na stronie ChromeStatus.com | Specyfikacja

WebAssembly Memory64

Propozycja memory64 dodaje obsługę liniowych pamięci WebAssembly o rozmaju większym niż 2^32 bitów. Nie zawiera nowych instrukcji, ale rozszerza istniejące instrukcje, aby umożliwić 64-bitowe indeksy pamięci i tabel.

ChromeStatus.com entry | Spec

Web Authentication API: metoda PublicKeyCredential getClientCapabilities()

Metoda PublicKeyCredential getClientCapabilities() pozwala określić, które funkcje WebAuthn są obsługiwane przez klienta użytkownika. Metoda zwraca listę obsługiwanych funkcji, co pozwala deweloperom dostosować proces uwierzytelniania i przepływy pracy do konkretnych funkcji klienta.

Śledzenie błędu #360327828 | Wpis na stronie ChromeStatus.com | Specyfikacja

algorytm X25519 interfejsu Web Cryptography API;

Algorytm „X25519” udostępnia narzędzia do uzgadniania kluczy przy użyciu funkcji X25519 określonej w [RFC7748]. Identyfikator algorytmu „X25519” można używać w interfejsie SubtleCrypto, aby uzyskać dostęp do zaimplementowanych operacji: generateKey, importKey, exportKey, deriveKey i deriveBits.

Śledzenie błędu #378856322 | Wpis na stronie ChromeStatus.com | Spec

Wyniki

Blokowanie w trybie oszczędzania energii

Gdy tryb oszczędzania energii jest aktywny, Chrome zamraża „grupę kontekstu przeglądania”, która była ukryta i nieaktywna przez ponad 5 minut, jeśli jakakolwiek podgrupa elementów tego samego pochodzenia przekroczy próg wykorzystania procesora, chyba że:

  • Umożliwia prowadzenie konferencji audio lub wideo (wykrywane przez identyfikację mikrofonu, kamery lub przechwytywania ekranu, okna lub karty albo RTCPeerConnection z „otwartym” RTCDataChannel lub „na żywo” MediaStreamTrack).
  • Steruje urządzeniem zewnętrznym (wykrywanie za pomocą WebUSB, WebBluetooth, WebHID lub WebSerial).
  • Zawiera blokadę sieci lub połączenie IndexedDB, które blokuje aktualizację wersji lub transakcję w innym połączeniu.
  • Zamrożenie polega na wstrzymaniu wykonywania. Jest on formalnie zdefiniowany w interfejsie API cyklu życia strony.

Próg wykorzystania procesora zostanie skalibrowany, aby zamrażać około 10% kart w tle, gdy tryb oszczędzania energii jest aktywny.

Śledzenie błędu #325954772 | Wpis na stronie ChromeStatus.com

Wyświetlanie uproszczonych wartości renderTime z wielu domen w czasie trwania elementu i LCP (niezależnie od wartości Timing-Allow-Origin)

Elementy czasu i wartości LCP mają atrybut renderTime, który jest dopasowany do pierwszego kadru, w którym obraz lub tekst zostały wyrenderowane.

Ten atrybut jest obecnie chroniony w przypadku obrazów z różnych źródeł, ponieważ wymaga nagłówka Timing-Allow-Origin w zasobach obrazów. Ograniczenie to można jednak łatwo obejść (np. wyświetlając obraz z tego samego źródła i z innego źródła w tym samym elemencie).

Ponieważ było to źródłem zamieszania, planujemy usunąć to ograniczenie i zamiast tego zwiększyć czas renderowania o 4 ms, gdy dokument nie jest izolowany między domenami. Wygląda na to, że jest to wystarczająco ogólne, aby uniknąć wycieku przydatnych informacji o czasie dekodowania dotyczących obrazów z innych źródeł.

Śledzenie błędu #373263977 | Wpis na stronie ChromeStatus.com | Specyfikacja

Przywróć responseStart i przedstaw firstResponseHeadersStart

Gdy włączysz 103 wczesnych podpowiedzi, odpowiedzi będą miały 2 oznaczenia czasu:

  • When the Early Hints arrive (103)
  • Gdy dotrą ostatnie nagłówki (np. 200)
  • W Chrome 115 udostępniliśmy firstInterimResponseStart, aby umożliwić pomiar tych 2 danych czasowych. Zmieniliśmy też znaczenie parametru responseStart (używanego przez funkcję Czas do pierwszego bajta (TTFB)) na „końcowe nagłówki”. Wystąpił problem z kompatybilnością internetową w przypadku przeglądarek i narzędzi, które nie wprowadziły podobnej zmiany w przypadku tych często używanych danych.

Chrome 133 przywraca tę zmianę responseStart, aby rozwiązać problem ze zgodnością, i zamiast tego wprowadza firstResponseHeadersStart, aby umożliwić witrynom pomiar czasu do końcowych nagłówków przy zachowaniu pierwotnej definicji TTFB.

Śledzenie błędu #40251053 | Informacja na stronie ChromeStatus.com | Specyfikacja

Renderowanie i grafika

WebGPU: formaty wierzchołków 1-elementowych (i unnorm8x4-bgra)

Dodaje dodatkowe formaty wierzchołków, które nie były dostępne w pierwotnym wydaniu WebGPU z powodu braku obsługi lub starszych wersji macOS (które nie są już obsługiwane przez żadną przeglądarkę). Formaty wierzchołków o 1 komponencie umożliwiają aplikacjom żądanie tylko niezbędnych danych, podczas gdy wcześniej w przypadku typów danych 8- i 16-bitowych musiały one żądać co najmniej dwukrotnie więcej danych. Format unorm8x4-bgra ułatwia wczytywanie kolorów wierzchołków zakodowanych w formacie BGRA przy zachowaniu tego samego shadera.

Śledzenie błędu #376924407 | Informacja na stronie ChromeStatus.com

Wersje próbne origin

Rezygnacja z blokowania w trybie Oszczędzanie energii

Ta wersja próbna umożliwia wyłączenie blokowania kart w funkcji Oszczędzanie energii, która jest dostępna w Chrome 133.

Origin Trial | Śledzenie błędu #325954772 | Wpis na stronie ChromeStatus.com | Specyfikacja

Docelowy element odniesienia w przypadku ARIA w wielu korzeniach

Docelowy obiekt odniesienia to funkcja umożliwiająca używanie atrybutów IDREF, takich jak foraria-labelledby, do odwoływania się do elementów w modelu Shadow DOM komponentu przy jednoczesnym zachowaniu hermetyzacji szczegółów wewnętrznych tego modelu. Głównym celem tej funkcji jest umożliwienie działania ARIA w ramach granic katalogu głównego.

Komponent może określić element w swoim drzewie cieni, który będzie pełnił funkcję „docelnika”. Gdy element gospodarz jest celem atrybutu IDREF, np. atrybutu for etykiety, cel odwołania staje się rzeczywistym celem etykiety.

Korzeń cienia określa identyfikator elementu docelowego w modelu Shadow DOM. Można to zrobić w JavaScript za pomocą atrybutu referenceTarget obiektu ShadowRoot lub w znacznikach HTML za pomocą atrybutu shadowrootreferencetarget elementu <template>.

Testowanie wersji Origin | Informacja na stronie ChromeStatus.com

Wycofanie i usunięcie

Wycofanie limitu WebGPU maxInterStageShaderComponents

Element maxInterStageShaderComponents limit został wycofany ze względu na kilka czynników. Przewidywana data usunięcia w Chrome 135.

  • Redundancja z poziomem maxInterStageShaderVariables: ten limit służy już do podobnego celu, kontrolując ilość danych przekazywanych między etapami shadera.
  • Niewielkie rozbieżności: chociaż istnieją niewielkie różnice w sposobie obliczania tych dwóch limitów, są one nieznaczne i można je skutecznie zarządzać w ramach limitu maxInterStageShaderVariables.
  • Upraszczanie: usunięcie maxInterStageShaderComponents upraszcza interfejs shadera i ułatwia pracę deweloperom. Zamiast zarządzać 2 oddzielnymi limitami o subtelnych różnicach, mogą skupić się na bardziej odpowiednim i pełnym maxInterStageShaderVariables.

Informacja na stronie ChromeStatus.com

Wcześniej, gdy zasób był pobierany z poziomu pamięci podręcznej za pomocą funkcji <link rel=prefetch>, Chrome ignorował semantykę pamięci podręcznej (czyli max-ageno-cache) podczas pierwszego użycia w ciągu 5 minut, aby uniknąć ponownego pobierania. Teraz Chrome usuwa ten szczególny przypadek i używa zwykłej semantyki pamięci podręcznej HTTP.

Oznacza to, że aby korzystać z zalet <link rel=prefetch>, deweloperzy stron internetowych muszą uwzględnić odpowiednie nagłówki pamięci podręcznej (Cache-Control lub Expires).

Dotyczy to również niestandardowych <link rel=prerender>.

Śledzenie błędu #40232065 | Wpis na stronie ChromeStatus.com

Usunięcie strony powitalnej Chrome uruchamianej na kartach z pierwszymi ustawieniami podczas pierwszego uruchomienia

Uwzględnienie wartości chrome://welcome w właściwości first_run_tabs pliku initial_preferences nie będzie już miało żadnego wpływu. Usunęliśmy ten błąd, ponieważ w przypadku środowiska pierwszego uruchomienia, który jest wyzwalany na platformach komputerowych, ta strona jest zbędna.

Informacja na stronie ChromeStatus.com