O ile nie zaznaczono inaczej, poniższe zmiany dotyczą najnowszej wersji Chrome w kanale beta na Androida, ChromeOS, Linuxa, macOS i Windowsa. Więcej informacji o wymienionych tu funkcjach znajdziesz, klikając odpowiednie linki lub na liście na stronie ChromeStatus.com. Od 21 lutego 2024 roku Chrome 123 jest w wersji beta. Najnowszą wersję możesz pobrać na stronie Google.com na komputerze lub w Sklepie Google Play na urządzeniu z Androidem.
CSS
W tej wersji dodaliśmy 5 nowych funkcji CSS.
Funkcja koloru CSS light-dark()
Funkcja light-dark()
w CSS ułatwia deweloperom dostosowanie schematu kolorów do preferencji użytkownika dotyczących trybu jasnego lub ciemnego.
Aby określić 2 różne wartości kolorów w ramach jednej właściwości CSS, użyj atrybutu light-dark()
. Przeglądarka (lub urządzenie) automatycznie wybierze odpowiedni kolor na podstawie obliczonej wartości color-scheme
elementu. Na przykład:
- Jeśli użytkownik wybierze jasny motyw, element
.target
będzie miał limonkowy tło. - Jeśli użytkownik wybierze ciemny motyw, element
.target
będzie miał zielone tło.
html {
color-scheme: light dark;
}
.target {
background-color: light-dark(lime, green);
}
Tryb wyświetlania obrazu w obrazie w CSS
Dodaliśmy obsługę funkcji mediów CSS display-mode
dla wartości picture-in-picture
. Dzięki temu deweloperzy mogą pisać konkretne reguły CSS, które są stosowane tylko wtedy, gdy aplikacja internetowa (lub jej część) jest wyświetlana w trybie obraz w obrazie.
Więcej informacji o tej funkcji multimediów znajdziesz w dokumentacji dotyczącej funkcji obraz w obrazie.
Właściwość CSS align-content dla bloków
Właściwość CSS align-content
jest teraz obsługiwana w przypadku kontenerów bloków i komórek tabeli. Wcześniej ta właściwość była obsługiwana tylko w przypadku elementów siatki i elastycznych. Na przykład display: block
, display: list-item
i display: table-cell
można teraz wyrównać za pomocą align-content
.
Więcej informacji znajdziesz w artykule Wsparcie dla align-content
w układance bloków i tabeli.
Właściwość CSS field-sizing
Korzystając z właściwości field-sizing
, deweloperzy mogą wyłączyć stałe domyślne rozmiary elementów interfejsu i uzależnić ich rozmiar od zawartości. Dzięki temu możesz tworzyć pola tekstowe, które automatycznie powiększają swoją objętość.
Właściwość CSS text-spacing-trim
Ta właściwość stosuje kerning do znaków interpunkcyjnych w językach chińskim, japońskim i koreańskim (CJK), aby uzyskać przyjemną dla oka typografię zgodnie z wymaganiami JLREQ (wymagania dotyczące układu tekstu w języku japońskim) i CLREQ (wymagania dotyczące układu tekstu w języku chińskim).
Wiele znaków interpunkcyjnych CJK zawiera odstępy wewnątrzglifowe. Na przykład znak końca zdania w CJK i nawias klamrowy w CJK zwykle mają odstępy wewnątrz znaku w prawej połowie przestrzeni znaku, aby zapewnić im stały postęp w porównaniu z innymi znakami ideograficznymi. Gdy jednak pojawiają się w rzędzie, odstępy między glifami stają się zbyt duże. Ta funkcja dostosowuje takie nadmierne odstępy.
Właściwość text-spacing-trim
może przyjmować jedną z tych 4 wartości: normal
, trim-start
, space-all
i space-first
.
Więcej informacji znajdziesz w artykule Cztery nowe funkcje międzynarodowe w usługach porównywania cen.
Interfejsy Web API
Zezwalanie na tworzenie danych uwierzytelniających WebAuthn w międzyźródłowym elemencie iframe
Ta funkcja umożliwia deweloperom tworzenie danych logowania WebAuthn (czyli danych logowania „publickey”, czyli kluczy dostępu) w elementach iframe w różnych domenach. Aby ta nowa umiejętność była dostępna, muszą być spełnione 2 warunki:
- Element iframe ma zasadę uprawnień
publickey-credentials-create-feature
. - iframe ma przejściową aktywację użytkownika.
Pozwoli to deweloperom tworzyć klucze dostępu w ramach wbudowanych scenariuszy, takich jak proces weryfikacji tożsamości, w którym strona korzystająca z usługi zapewnia sfederowane uwierzytelnianie.
Pakiet funkcji raportowania atrybucji
Chrome 123 wprowadza do interfejsu Attribution Reporting API możliwość dostosowywania danych wyzwalaczy i filtrów wartości podlegających agregacji. Te zmiany mają na celu:
- Dodatkowa możliwość konfiguracji interfejsu API na potrzeby raportowania na poziomie zdarzenia dzięki obsłudze dostosowywania wartości i wielkości danych reguły.
- Dodatkowe możliwości konfiguracji interfejsu API na potrzeby raportów zbiorczych dzięki obsłudze filtrów w wartościach agregowalnych.
Atrybucja w aplikacji i internecie
Rozszerza interfejs Attribution Reporting API, aby umożliwić przypisywanie konwersji, które występują w internecie, do zdarzeń występujących poza przeglądarką, w innych aplikacjach.
Proponowana tu metoda wykorzystuje obsługę atrybucji na poziomie systemu operacyjnego. W szczególności daje deweloperowi możliwość zezwalania na złączanie zdarzeń w internecie mobilnym ze zdarzeniami w Piaskownicy prywatności na Androida, choć można też zaimplementować obsługę innych platform.
blocking=render
w ramach skryptów modułów wbudowanych
To niewielka zmiana, która usuwa sztuczne ograniczenie z poziomu <script blocking="render">
.
Przed tą zmianą element <script blocking="render"type="module">
wymagał atrybutu src
, nawet jeśli ten atrybut to adres URI danych.src
To niepotrzebne ograniczenie, ponieważ skrypty modułów wbudowanych, które importują inne skrypty, powinny nadal mieć możliwość blokowania renderowania.
Motywacją do tego jest fakt, że przejścia między widokami dokumentów często polegają na dostosowywaniu skryptów blokujących renderowanie, więc ułatwienie tworzenia takich skryptów ułatwiłoby korzystanie z tej funkcji.
Dokumentacja obrazu w obrazie: zezwól interfejsowi API focus()
na skupienie się na otwierającym
Teraz możesz użyć opener.focus()
z okna dokumentu z obrazem w obrazie, aby na poziomie systemu skupić uwagę na karcie, do której należy to okno.
Dzięki temu programiści mogą w razie potrzeby przywrócić pierwotną kartę na pierwszy plan. Może się to zdarzyć na przykład wtedy, gdy użytkownik chce uzyskać dostęp do interfejsu, który nie mieści się w mniejszym oknie obrazu w oknie.
Importowanie atrybutów with
– składnia
Atrybuty importu to funkcja JavaScriptu, która umożliwia adnotowanie deklaracji importu, np. import xxx from "mod" with { type: "json" }
. Chrome wprowadziła poprzednią wersję propozycji (w Chrome 91) przy użyciu słowa kluczowego assert
. Ta wersja została zaktualizowana, aby używać with
, ponieważ wymagane były pewne zmiany podczas integracji z HTML w przypadku modułów JSON i CSS.
jitterBufferTarget
Atrybut jitterBufferTarget
pozwala aplikacjom określić docelową długość czasu w milisekundach, jaką ma mieć bufor jittera RTCRtpReceiver
. Ma to wpływ na ilość buforowania wykonywanego przez klienta użytkownika, co z kolei wpływa na retransmisje i odzyskiwanie utraconego pakietu. Zmiana wartości docelowej pozwala aplikacjom na kontrolowanie kompromisu między opóźnieniem odtwarzania a ryzykiem braku dźwięku lub klatek wideo z powodu jittera sieci.
Czas trwania długiej ramki animacji
Interfejs Long Animation Frames API jest rozszerzeniem interfejsu Long Tasks API. Mierzy zadanie wraz z kolejną aktualizacją renderowania, dodając informacje takie jak długotrwałe skrypty, czas renderowania i czas spędzony na wymuszanym układzie i stylu, czyli throttling układu.
Programiści mogą używać tej funkcji do diagnozowania „powolnego działania”, które jest mierzone za pomocą INP. Mogą oni znaleźć przyczyny zatorów na głównym wątku, które często są przyczyną niskiej wartości INP.
NavigationActivation
Interfejs aktywacji nawigacji dodaje navigation.activation
. Przechowuje stan dotyczący momentu aktywacji bieżącego dokumentu (np. zainicjowania lub przywrócenia z pamięci podręcznej stanu strony internetowej).
Oznacza to, że deweloperzy mogą oferować strony dostosowane do miejsca, z którego użytkownik do nich dotarł. Możesz np. uruchomić inną animację, jeśli użytkownik przyszedł ze strony głównej.
zdarzenie pagereveal
Zdarzenie pagereveal
jest wywoływane w obiekcie okna dokumentu przy pierwszej okazji do wyrenderowania po tym, jak dokument został: początkowo załadowany, przywrócony z pamięci podręcznej stanu strony internetowej wstecz i wprzód lub aktywowany z poziomu wstępnego wyrenderowania.
Autor strony może go użyć do skonfigurowania sposobu otwierania strony, np. przejścia z poprzedniego stanu.
PointerEvent.deviceId dla funkcji rysowania wieloma piórami
Urządzenia z zaawansowanymi funkcjami wprowadzania danych za pomocą pióra stają się coraz bardziej popularne, dlatego ważne jest, aby platforma internetowa nadal się rozwijała, aby w pełni obsługiwać te zaawansowane funkcje i umożliwiać bogate wrażenia zarówno użytkownikom, jak i deweloperom. Jednym z takich usprawnień jest możliwość rozpoznawania przez urządzenie digitizera więcej niż jednego urządzenia piśmiennego, które z nim współdziała. Ta funkcja jest rozszerzeniem interfejsu PointerEvent
, aby uwzględnić nowy atrybut deviceId
, który jest trwałym w ramach sesji, izolowanym w dokumentie, unikalnym identyfikatorem, którego deweloper może używać do niezawodnego identyfikowania poszczególnych piór wchodzących w interakcję ze stroną.
Weryfikacja dostępu do sieci prywatnej dla żądań nawigacji: tryb ostrzegawczy
Zanim witryna A przekieruje użytkownika do innej witryny B w sieci prywatnej użytkownika, funkcja ta:
- Sprawdza, czy żądanie zostało zainicjowane z bezpiecznego kontekstu.
- Wysyła żądanie wstępne i sprawdza, czy B odpowiada nagłówkiem, który zezwala na dostęp do sieci prywatnej.
Funkcje dotyczące zasobów podrzędnych i elementów wykonawczych są już dostępne, ale ta zmiana dotyczy w szczególności żądań nawigacyjnych.
Te kontrole są przeprowadzane w celu ochrony sieci prywatnej użytkownika. Ta funkcja działa w trybie „tylko ostrzeżenia”, więc żądania nie zostaną odrzucone, jeśli któryś z testów zakończy się niepowodzeniem. Zamiast tego w Narzędziach dla programistów wyświetli się ostrzeżenie, aby pomóc deweloperom przygotować się na nadchodzące zmiany.
Wskazówka klienta Sec-CH-UA-Form-Factor
Ten podpowiedź wskazuje „formę” klienta użytkownika lub urządzenia, aby witryna mogła dostosować swoją odpowiedź.
Interfejs API routingu statycznego Service Worker
Ten interfejs API umożliwia deweloperom konfigurowanie routingu i przekazywanie prostych zadań do wykonania przez skrypt usługi. Jeśli warunek jest spełniony, nawigacja odbywa się bez uruchamiania skryptu usługi ani wykonywania kodu JavaScript, co pozwala stronom internetowym uniknąć spadku wydajności spowodowanego przechwyceniem żądania przez skrypt usługi. Więcej informacji znajdziesz w poprzednim poście na blogu na temat tego interfejsu API.
Aktualizacja Shared Storage
Ta aktualizacja umożliwia uruchamianie workletów w różnych domenach bez konieczności tworzenia elementu iframe.
Kodowanie treści zstd
Zstandard, czyli zstd, to mechanizm kompresji danych opisany w standardzie RFC 8878. Jest to szybki algorytm kompresji bezstratnej, który umożliwia kompresję w czasie rzeczywistym na poziomie zlib i zapewnia lepsze współczynniki kompresji. Token zstd
został dodany jako zarejestrowany przez IANA token kodowania treści.
Dodanie obsługi zstd
jako kodowania treści pozwoli szybciej wczytywać strony, zużywać mniej przepustowości oraz poświęcać mniej czasu, procesora i energii na kompresję na naszych serwerach, co z kolei obniży koszty serwera.
Nowe wersje próbne origin
W Chrome 123 możesz wziąć udział w tych nowych testach wersji.
Integracja obietnic JavaScript w WebAssembly
Aby obsługiwać elastyczne aplikacje napisane przy użyciu WebAssembly, należy udostępnić funkcje, które umożliwiają zawieszanie i wznawianie programów WebAssembly.
Głównym początkowym zastosowaniem integracji obietnic jest umożliwienie programom WebAssembly, których kod źródłowy korzysta z synchronicznych interfejsów API, korzystania z asymetrycznych interfejsów API, które stają się coraz bardziej popularne na platformie internetowej.
Zarejestruj się, aby skorzystać z wersji próbnej integracji z usługą Promise.
Usunięcia
Chrome 123 usuwa tę funkcję.
Alias window-placement
dla uprawnienia i zasady uprawnień window-management
W Chrome 111 dodano window-management
jako alias dla ciągu znaków window-placement
uprawnień i zasady uprawnień.
Było to częścią szerszych działań polegających na przemianowaniu ciągów znaków, które ostatecznie zostały wycofane i usunięte (window-placement
). Zmiana terminologii zwiększa trwałość deskryptora w miarę ewolucji interfejsu Window Management API.
Ostrzeżenia o wycofaniu aliasu window-placement
pojawiły się w Chrome 113 i zostaną teraz usunięte.