W prawie każdej wersji Chrome wprowadzamy znaczną liczbę aktualizacji i ulepszeń dotyczących produktu, jego wydajności oraz możliwości platformy internetowej. Z tego artykułu dowiesz się, które funkcje są wycofywane i usuwane w Chrome 60, które od 8 czerwca jest dostępne w wersji beta. Ta lista może ulec zmianie w każdej chwili.
Bezpieczeństwo
Biblioteka crypto.subtle wymaga teraz bezpiecznego źródła
Web Crypto API, które jest obsługiwane od wersji 37 przeglądarki Chrome, zawsze działało w przypadku niezabezpieczonych źródeł. Ze względu na długoletnią zasadę Chrome, która preferuje bezpieczne źródła w przypadku zaawansowanych funkcji, crypto.subtle
jest widoczna nie tylko w bezpiecznych źródłach.
Intend to Remove | Błąd w Chromium
Usuwanie inicjowanych przez treści przejść do adresów URL danych w górnym okienku
Ponieważ użytkownicy nietechniczni nie są z nimi zaznajmieni, coraz częściej obserwujemy, że schemat data:
jest wykorzystywany w atakach spoofingowych i phishingowych. Aby temu zapobiec, blokujemy wczytywanie stron z adresami URL data:
w ramce górnej. Dotyczy to tagów <a>
, window.open
, window.location
i podobnych mechanizmów. Schemat data:
nadal będzie działać w przypadku zasobów wczytywanych przez stronę.
Ta funkcja została wycofana w Chrome 58 i jest teraz usunięta.
Intend to Remove | Chromestatus Tracker | Chromium Bug
Tymczasowe wyłączenie metody navigator.sendBeacon() w przypadku niektórych blobów
Funkcja navigator.sendBeacon()
jest dostępna od wersji Chrome 39.
W pierwotnej implementacji argument data
funkcji mógł zawierać dowolny dowolny blob, którego typ nie jest bezpieczny w ramach CORS. Uważamy, że jest to potencjalne zagrożenie dla bezpieczeństwa, choć nikt jeszcze nie próbował go wykorzystać. Ponieważ nie mamy rozsądnego, natychmiastowego rozwiązania tego problemu, tymczasowo funkcja sendBeacon()
nie może być wywoływana w przypadku blobów, których typ NIE jest bezpieczny w ramach CORS.
Chociaż ta zmiana została wprowadzona w Chrome 60, została później scalona z Chrome 59.
CSS
Sprawianie, że funkcja selekcyjna potomka, która przebija cienie, działa jak funkcja selekcyjna potomka
Kombinator potomków przebijający cień (>>>
), który jest częścią modułu CSS ograniczania zakresu na poziomie 1, miał dopasowywać elementy potomne danego elementu nadrzędnego nawet wtedy, gdy znajdowały się w drzewie cienia. Miało to jednak pewne ograniczenia.
Po pierwsze, zgodnie ze specyfikacją można go było używać tylko w wywołaniach JavaScript, np. querySelector()
, i nie działał on w arkuszach stylów. Co ważniejsze, dostawcy przeglądarek nie byli w stanie uruchomić Shadow DOM na więcej niż 1 poziomie.
W związku z tym z odpowiednich specyfikacji usunięto funkcję selekcyjną potomka, w tym Shadow DOM v1. Zamiast zrywać strony internetowe przez usunięcie tego selektora z Chromium, postanowiliśmy zmienić nazwę selektora obok potomka, który przenika cienie, na selektora potomka. Pierwotne zachowanie zostało wycofane w Chrome 45. Nowe zachowanie zostało zaimplementowane w Chrome 61.
Intend to Remove | Chromestatus Tracker | Chromium Bug
JavaScript
Wycofanie i usunięcie metody RTCPeerConnection.getStreamById()
Prawie 2 lata temu getStreamById()
został usunięty ze specyfikacji WebRTC. Większość innych przeglądarek już usunęła tę funkcję ze swoich implementacji. Ta funkcja jest rzadko używana, ale istnieje niewielkie ryzyko niekompatybilności z przeglądarkami Edge i WebKit inne niż Safari, w których getStreamById()
jest nadal obsługiwana. Deweloperzy, którzy potrzebują alternatywnej implementacji, mogą znaleźć przykładowy kod w pliku „Intent to Remove” (chcę usunąć) poniżej.
Został usunięty w Chrome 62.
Intend to Remove | Chromestatus Tracker | Chromium Bug
Wycofanie funkcji SVGPathElement.getPathSegAtLength
Ponad 2 lata temu element getPathSegAtLength()
został usunięty ze specyfikacji SVG. Ponieważ w httparchive jest tylko kilka trafień dla tej metody, wycofujemy ją w Chrome 60. Usunięcie powinno nastąpić w Chrome 62, które zostanie udostępnione na początku lub w połowie października.
Zamierzamy wycofać | Chromestatus Tracker | Błąd w Chromium
Przenoszenie funkcji getContextAttributes() do flagi
Funkcja getContextAttributes()
jest obsługiwana w CanvasRenderingContext2D
od 2013 r. Jednak ta funkcja nie była częścią żadnego standardu i od tego czasu nie została do niego dodana. Ta funkcja powinna być implementowana za pomocą flagi wiersza poleceń --enable-experimental-canvas-features
, ale została omyłkowo pominięta. W Chrome 60 ten błąd został poprawiony. Uważamy, że ta zmiana jest bezpieczna, ponieważ nie ma danych wskazujących, że ktoś używa tej metody.
Usuń Headers.prototype.getAll()
Funkcja Headers.prototype.getAll()
jest usuwana zgodnie z najnowszą wersją specyfikacji Fetch.
Intend to Remove | Chromestatus Tracker | Chromium Bug
Usuń indexedDB.webkitGetDatabaseNames()
Dodaliśmy tę funkcję, gdy Indexed DB była stosunkowo nową w Chrome, a prefiksowanie było na topie. Interfejs API asynchronicznie zwraca listę nazw istniejących baz danych w źródle, co wydaje się rozsądne.
Niestety ta konstrukcja ma wadę polegającą na tym, że wyniki mogą być nieaktualne w momencie ich zwrócenia, więc można jej używać tylko do rejestrowania, a nie do poważnej logiki aplikacji. Problem na GitHubie zawiera informacje o poprzedniej dyskusji na temat alternatyw, które wymagają innego podejścia. Deweloperzy interesują się tym tematem, ale ze względu na brak postępów w rozwiązaniu tego problemu w różnych przeglądarkach autorzy bibliotek znaleźli sposób na obejście go.
Deweloperzy, którzy potrzebują tej funkcji, muszą opracować własne rozwiązanie. Biblioteki takie jak Dexie.js używają globalnej tabeli, która jest kolejną bazą danych służącą do śledzenia nazw baz danych.
Ta funkcja została wycofana w Chrome 58 i jest teraz usunięta.
Intend to Remove | Chromestatus Tracker | Chromium Bug
Usuń WEBKIT_KEYFRAMES_RULE i WEBKIT_KEYFRAME_RULE
Niestandardowe stałe WEBKIT_KEYFRAMES_RULE
i WEBKIT_KEYFRAME_RULE
zostały usunięte z reguły CSS.
Deweloperzy powinni zamiast tego używać KEYFRAMES_RULE
i KEYFRAME_RULE
.
Intend to Remove | Chromestatus Tracker | Chromium Bug
Interfejs
Wymaganie od użytkownika gestów w przypadku okien przed anulowaniem
Od wersji 60 Chrome okno beforeunload
będzie się pojawiać tylko wtedy, gdy ramka, która próbuje je wyświetlić, otrzyma gest lub interakcję użytkownika (lub gdy jakakolwiek wbudowana ramka otrzyma taki gest). Dla jasności: nie jest to zmiana w wysyłaniu zdarzenia beforeunload
. Zmiana dotyczy tylko tego, czy okno ma się wyświetlać.
Okno beforeunload
to okno modalne aplikacji. W związku z tym jest nieprzyjazna dla użytkownika, ponieważ reaguje na jego nawigację, kwestionując jego decyzję. Ta funkcja ma też pozytywne zastosowania. Jest on często używany, aby ostrzegać użytkowników, że stracą dane podczas przechodzenia do innych stron.
Chociaż możliwość wyświetlania tekstu w oknie dialogowym beforeunload
została już dawno temu usunięta, okna beforeunload
nadal są wykorzystywane do nadużyć. W szczególności beforeunload
dialogi są elementem witryn oszustwa, w których automatycznie odtwarzane audio i tekst z zagrożeniem tworzą kontekst, w którym komunikat Chromium „Czy na pewno chcesz opuścić tę stronę” staje się niepokojący.
Chcemy znaleźć złoty środek i zezwolić tylko na właściwe wykorzystywanie beforeunload
dialogu. Dialogi, w których użytkownik może stracić stan, to dobre przykłady. Jeśli użytkownik nigdy nie wchodzi w interakcję ze stroną, nie może stracić żadnych danych, dlatego nie narażamy się na utratę danych użytkownika, gdy w takim przypadku pomijamy okno dialogowe.