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>
i <details>
, gdy elementy są otwarte, oraz <select>
i <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.
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>
i 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.
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 parametruresponseStart
(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 for
i aria-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łnymmaxInterStageShaderVariables
.
Informacja na stronie ChromeStatus.com
Usuń <link rel=prefetch>
regułę 5-minutowego limitu
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-age
i no-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.