Chrome 149 w wersji beta

Opublikowano: 6 maja 2026 r.

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

CSS i interfejs

Usuwanie z arkusza stylów UA reguły dotyczącej koloru obramowania tabeli

Ta zmiana usuwa błędną regułę CSS border-color: gray z arkusza stylów UA dla elementu <table>.

Specyfikacja HTML nie zawiera tej reguły, co powoduje, że obramowania nie są domyślnie ustawiane na currentColor. Ani Firefox, ani Webkit nie mają w arkuszu stylów UA reguły dotyczącej koloru obramowania gray, co powoduje problemy z interoperacyjnością.

Obsługa path() i shape() w shape-outside

Dodaje obsługę funkcji kształtu path() i shape() we właściwości CSS shape-outside. Te funkcje umożliwiają deweloperom definiowanie kształtów wykluczeń pływających za pomocą współrzędnych prostokąta.

Obsługa rect() i xywh() w shape-outside

Dodaje obsługę podstawowych funkcji kształtu rect() i xywh() we właściwości CSS shape-outside. Te funkcje umożliwiają deweloperom definiowanie kształtów wykluczeń pływających za pomocą współrzędnych prostokąta, co sprawia, że Chrome jest zgodny z Firefoxem i Safari, które już obsługują tę funkcję.

Kolor uzupełniający systemu w zakresie aplikacji internetowej

Ogranicza dostęp do koloru uzupełniającego systemu w przypadku słów kluczowych CSS i accent-color: auto tylko do aplikacji internetowej i kontekstu profilu początkowego.

Słowa kluczowe CSS AccentColor i AccentColorText stanowią znaczący wektor odcisków palców , gdy kolory systemu użytkownika są szeroko udostępniane w internecie. Dlatego są one dostępne tylko w kontekstach zainstalowanych aplikacji internetowych. Elementy sterujące formularza z accent-color: auto również pasują do tego zakresu dzięki tej funkcji. Wprowadza to bardziej spójne oczekiwania deweloperów i użytkowników dotyczące kolorów systemu oraz jest zgodne z ograniczeniami dotyczącymi odcisków palców w przypadku AccentColor[Text].

Obcinanie tekstu, który nie mieści się w elemencie, podczas interakcji użytkownika

Gdy użytkownik wchodzi w interakcję (edytuje lub nawiguje za pomocą kursora) z tekstem, w którym ustawiono text-overflow: ellipsis, tekst tymczasowo przełącza się z wielokropka na obcięcie, co umożliwia użytkownikowi wyświetlanie i interakcję z ukrytą treścią, która nie mieści się w elemencie. Ta funkcja dotyczy wszystkich elementów, które można edytować i których nie można edytować. W przypadku elementów sterujących formularza (textarea, input) ta funkcja jest już obsługiwana.

Dekoracje odstępów CSS

Dekoracje odstępów CSS umożliwiają stylizowanie odstępów w układach kontenerów, takich jak siatka i flexbox, podobnie jak column-rule w układzie wielokolumnowym. Ta funkcja jest bardzo często zgłaszana przez deweloperów stron internetowych, którzy obecnie muszą stosować obejścia, aby stylizować odstępy w układach siatki i flexbox.

image-rendering: crisp-edges

image-rendering: crisp-edges oznacza, że obraz powinien być skalowany w sposób, który zachowuje kontrast i krawędzie oraz unika wygładzania kolorów lub wprowadzania rozmycia obrazu.

Granica warstwy najwyższej pseudoklasy działania użytkownika

Ta funkcja reprezentuje zachowanie opisane w specyfikacji CSS Selectors Level 4, która stwierdza, że :hover, :active i :focus-within pasują do elementów nadrzędnych, ale tylko do pierwszego elementu warstwy najwyższej w łańcuchu nadrzędnym. Zmiana w Chromium wprowadza to ograniczenie w przypadku elementów warstwy najwyższej.

Oznacza to, że w poniższej strukturze, jeśli użytkownik najedzie kursorem na <button>, pseudoklasa :hover będzie pasować do <button> i wyskakującego okienka, ale nie będzie pasować do elementu <main>.

<main>
  <div popover>
    <button></button>
  </div>
</main>
<script>document.querySelector('[popover]').showPopover();</script>

Powodem tej zmiany jest to, że elementy warstwy najwyższej są zwykle renderowane „gdzie indziej”, w lokalizacji, która jest wizualnie odłączona od elementu nadrzędnego. Dlatego zwykle nie ma sensu zmieniać stylów elementu nadrzędnego, gdy element warstwy najwyższej jest najechany lub aktywowany.

W implementacji dostosowywanego elementu select dostarczonej w Chromium ta logika jest zakodowana na stałe w konkretnym przypadku wyskakującego okienka ::picker() elementu select. Ta specjalna logika jest usuwana na rzecz bardziej ogólnego zachowania dzięki tej funkcji.

Obsługa path-length jako właściwości CSS

Ta zmiana wprowadza nową właściwość CSS path-length, która jest mapowana na istniejący atrybut prezentacji SVG pathLength. Dotyczy elementów geometrii SVG, które obsługują pathLength (w tym <path>, <circle>, <rect>, <line>, <polyline>, <polygon> i <ellipse>).

Udostępnienie pathLength jako właściwości CSS umożliwia autorom określanie jej w arkuszach stylów, stylach wbudowanych i animacjach, co pozwala jej uczestniczyć w normalnym kaskadowaniu CSS, specyficzności, przejściach i animacjach. Właściwość wpływa na wszystkie obliczenia, które zależą od całkowitej długości ścieżki, w tym renderowanie kreski i pozycjonowanie tekstu wzdłuż <textPath>.

Deklaracje CSS zastępują atrybut prezentacji zgodnie ze standardowymi regułami pierwszeństwa CSS. Wartość początkowa path-length to none, która oznacza brak długości ścieżki podanej przez autora i różni się od jawnej wartości liczbowej, takiej jak 0.

Gdy funkcja jest wyłączona, zachowywane jest dotychczasowe zachowanie dotyczące tylko atrybutów.

Interfejsy API

Intl.Locale.prototype.variants

Dodaj Intl.Locale.prototype.variants zgodnie z propozycją TC39 i zaakceptuj „variants” w pakiecie opcji w konstruktorze Intl.Locale zgodnie z aktualizacją identyfikatora języka TC39. Zmiany w ECMA402 zostały scalone w żądaniu pull 960, a kod testowy w test262 został scalony w żądaniu pull 4474

Obietnice programowego przewijania

Deweloperzy stron internetowych nie mają obecnie możliwości sprawdzenia, kiedy zakończy się programowe płynne przewijanie. Ta funkcja rozwiązuje ten problem: metody programowego przewijania zwracają obiekty Promise, które są rozwiązywane po zakończeniu przewijania ze statusem przerwania.

Payment Request: umożliwienie modułom do obsługi płatności zgłaszania błędów wewnętrznych

Umożliwia modułom do obsługi płatności, do których dostęp uzyskuje się za pomocą Payment Request API, zwracanie różnych błędów w przypadku „anulowania przez użytkownika” i „błędu wewnętrznego aplikacji płatniczej”. Umożliwia to deweloperom stron internetowych tworzenie lepszych ścieżek dla użytkowników, np. przez ponawianie lub przełączanie się na inną ścieżkę w przypadku wystąpienia błędu wewnętrznego aplikacji, a jednocześnie prawidłowe zatrzymywanie ścieżki, jeśli użytkownik chce anulować.

Web-based Payment Handler API może wskazywać tę różnicę na podstawie błędu, którego używa do odrzucenia obietnicy przekazanej do PaymentRequestEvent.respondWith. Jeśli obietnica zostanie odrzucona z powodu OperationError, do sprzedawcy zostanie zwrócony „błąd wewnętrzny aplikacji” (OperationError) za pomocą metody PaymentRequest.show(). W przeciwnym razie zostanie zwrócone „anulowanie przez użytkownika” (AbortError).

Podobnie aktualizowana jest infrastruktura modułu do obsługi płatności w aplikacji natywnej, ale nie obejmuje ona interfejsów API.

Uwzględnianie autocorrect="off" w przypadku klawiatury dotykowej w systemie Windows w TSF

Atrybut HTML autocorrect umożliwia autorom stron internetowych kontrolowanie, czy autokorekta ma być stosowana do danych wejściowych użytkownika w elementach, które można edytować, w tym w <input>, <textarea>, i hostach z możliwością edycji. W systemie Windows klawiatura dotykowa ignoruje ten atrybut i zawsze automatycznie poprawia słowa. Na przykład, wpisanie "truf" i spacji w elemencie z autocorrect="off" spowoduje wyświetlenie "true " zamiast zachowania "truf ". Ta funkcja sprawia, że integracja TSF w Chrome wykrywa i cofa autokorektę klawiatury dotykowej, gdy w przypadku elementu, który można edytować , ustawiono autocorrect="off".

Rozłączanie WebSocketów przy wejściu do pamięci podręcznej stanu strony internetowej

Aktywne połączenia WebSocket nie uniemożliwiają już stronie wejścia do pamięci podręcznej stanu strony internetowej. Zamykając połączenia przy wejściu do pamięci podręcznej stanu strony internetowej zamiast oznaczania dokumentu jako niekwalifikującego się, przeglądarka umożliwia przechowywanie i przywracanie stron z aktywnymi WebSocketami.

Atrybut Request.isReloadNavigation

Dodaje do interfejsu Fetch API atrybut logiczny tylko do odczytu isReloadNavigation. Ten atrybut wskazuje, czy bieżące żądanie nawigacji zostało zainicjowane jako ponowne wczytanie wywołane przez użytkownika (np. za pomocą przycisku odświeżania, location.reload() lub history.go(0)). Ten sygnał jest udostępniany głównie w obiekcie Request w FetchEvent Service Workera.

Wyłączanie filtrów SVG w przypadku wtyczek oraz iframe'ów z innych domen i ograniczonych

Ta funkcja uniemożliwia stosowanie filtrów SVG do iframe'ów z innych domen lub ograniczonych (np. iframe'ów w piaskownicy) oraz wbudowanych wtyczek (np. plików PDF). Gdy ramka lub wtyczka ma być renderowana z efektem filtra SVG, drzewo efektów jest przeszukiwane w celu znalezienia najwyższego elementu nadrzędnego bez filtrów SVG, a następnie stosowany jest ten efekt.

Nowe wersje próbne origin

W Chrome 149 możesz wziąć udział w tych nowych wersjach próbnych origin.

Permissions Policy: focus-without-user-activation

Umożliwia osadzającym kontrolowanie programowego ustawiania ostrości z osadzonej treści za pomocą zasady uprawnień focus-without-user-activation. Gdy zasada jest odrzucona w przypadku ramki, wywołania programowego ustawiania ostrości (element.focus(), autofocus, window.focus(), dialog.showModal() i ustawianie ostrości w wyskakującym okienku) są blokowane, chyba że są wywoływane przez aktywację użytkownika. Ustawianie ostrości zainicjowane przez użytkownika, np. kliknięcie lub naciśnięcie Tab, nigdy nie jest blokowane.

Zasadę można ustawić za pomocą nagłówka odpowiedzi HTTP Permissions-Policy lub atrybutu allow iframe'a. Delegowanie ostrości jest obsługiwane: ramka nadrzędna, która ma ostrość, może programowo przekazać ostrość do ramki podrzędnej, nawet jeśli zasada jest odrzucona w przypadku ramki podrzędnej. Gdy ramka ma ostrość, może ją przenieść w obrębie własnego poddrzewa.

Interfejs API Gamepad oparty na zdarzeniach

Ta propozycja rozszerza Gamepad API o nowy model oparty na zdarzeniach, który umożliwia aplikacjom odbieranie danych wejściowych z gamepada z mniejszym opóźnieniem. Zamiast polegać na częstym odpytywaniu za pomocą navigator.getGamepads(), deweloperzy mogą teraz nasłuchiwać zdarzenia rawgamepadinputchange, które jest wywoływane, gdy urządzenie udostępnia nowe dane wejściowe. Umożliwia to bardziej responsywną obsługę danych wejściowych, szczególnie w aplikacjach wrażliwych na opóźnienia.

Niestandardowe deskryptory WebAssembly

Umożliwia WebAssembly wydajniejsze przechowywanie danych powiązanych z typami na poziomie źródła w nowych obiektach niestandardowych deskryptorów. Te niestandardowe deskryptory można skonfigurować za pomocą prototypów obiektów WebAssembly tego typu na poziomie źródła. Umożliwia to instalowanie metod w łańcuchu prototypów obiektu WebAssembly i wywoływanie ich bezpośrednio z JavaScriptu za pomocą normalnej składni wywołania metody. Prototypy i metody można skonfigurować deklaratywnie za pomocą importowanej funkcji wbudowanej.