Wycofywanie i usuwanie w Chrome 80

Jan Kowalski
Joe Medley

.

Nie zezwalaj na synchroniczne żądania XMLHTTPRequest() w zamykaniu strony

Chrome nie zezwala teraz na synchroniczne wywołania XMLHTTPRequest() podczas zamykania strony, gdy użytkownik ją zamyka lub ją opuszcza. Dotyczy beforeunload, unload, pagehide i visibilitychange.

Aby mieć pewność, że po wyładowaniu strony dane są wysyłane na serwer, zalecamy stosowanie metody sendBeacon() lub Fetch keep-alive. Na razie użytkownicy korporacyjni mogą używać flagi zasady AllowSyncXHRInPageDismissal, a deweloperzy mogą użyć flagi testowej allow-sync-xhr-in-page-dismissal, aby zezwolić na synchroniczne żądania XHR podczas wczytywania strony. Jest to tymczasowa rezygnacja, którą planujemy usunąć w Chrome 88.

Szczegółowe informacje na temat tej i alternatywnych rozwiązań znajdziesz w artykule Nie zezwalaj na używanie synchronicznego żądania XMLHTTPRequest() podczas zamykania strony.

Intencja usunięcia | Stan platformy Chrome | Błąd Chromium

Wycofanie obsługi FTP

Obecna implementacja FTP w Chrome nie obsługuje połączeń szyfrowanych (FTPS) ani serwerów proxy. Wykorzystanie FTP w przeglądarce jest na tyle niskie, że nie warto już inwestować w usprawnienie obecnego klienta FTP. Dodatkowo na wszystkich platformach, na których występuje problem, są dostępne lepsze klienty FTP.

W Chrome 72 usunęliśmy obsługę pobierania zasobów podrzędnych dokumentów przez FTP i renderowania zasobów FTP najwyższego poziomu. Obecnie przejście do adresów URL FTP powoduje wyświetlenie listy katalogów lub pliku do pobrania w zależności od typu zasobu. Błąd w Google Chrome 74 i nowszych wersjach spowodował wyłączenie obsługi dostępu do adresów URL FTP przez serwery proxy HTTP. Obsługa FTP na serwerze proxy została całkowicie wycofana w Google Chrome 76.

Pozostałe możliwości implementacji FTP w Google Chrome są ograniczone do wyświetlania listy katalogów lub pobierania zasobów przez nieszyfrowane połączenia.

Harmonogram wycofywania jest wstępnie ustawiony w następujący sposób:

Chrome 80 (wersja stabilna w lutym 2020 r.)

FTP jest domyślnie wyłączony w klientach indywidualnych, ale można go włączyć za pomocą flagi wiersza poleceń --enable-ftp lub --enable-features=FtpProtocol. Można też ją włączyć za pomocą opcji #enable-ftp na stronie chrome://flags.

Chrome 81 (wersja stabilna w marcu 2020 r.)

FTP jest domyślnie wyłączony we wszystkich instalacjach Chrome, ale można go włączyć za pomocą flagi wiersza poleceń --enable-ftp lub --enable-features=FtpProtocol.

Chrome 82 (wersja stabilna od kwietnia 2020 r.)

Obsługa FTP zostanie całkowicie wycofana.

Intencja usunięcia | Stan platformy Chrome | Błąd Chromium

Nie zezwalaj na wyskakujące okienka podczas wczytywania strony

Strony nie mogą już używać elementu window.open() do otwierania nowych stron podczas wyładowywania. Funkcja blokowania wyskakujących okienek w Chrome już na to nie pozwalała, ale teraz jest to zabronione niezależnie od tego, czy jest ono włączone.

Firmy mogą używać flagi zasady AllowPopupsDuringPageUnload, aby zezwalać na wyskakujące okienka podczas wyładowywania. Zamierzamy usunąć tę flagę w Chrome 82.

Intencja usunięcia | Narzędzie do śledzenia stanu Chrome | Błąd Chromium

Serializacja i przenoszenie obrazu ImageBitmap bez czyszczenia pamięci zostały usunięte

Błędy będą teraz zgłaszane, gdy skrypt spróbuje zserializować lub przesłać obraz ImageBitmap nieoczyszczony z jego źródła. ObrazBitmap niezawierający oczyszczonych z nich źródeł to plik, który zawiera dane z obrazów z innych domen, które nie są zweryfikowane przez logikę CORS.

Intencja usunięcia | Stan platformy Chrome | Błąd Chromium

Obsługa protokołów wymaga teraz bezpiecznego kontekstu

Metody registerProtocolHandler() i unregisterProtocolHandler() wymagają teraz bezpiecznego kontekstu. Te metody umożliwiają zmianę konfiguracji stanów klientów w taki sposób, aby umożliwiały przesyłanie potencjalnie poufnych danych przez sieć.

Metoda registerProtocolHandler() zapewnia stronie internetowej mechanizm rejestracji na potrzeby obsługi protokołu po uzyskaniu zgody użytkownika. Na przykład internetowa aplikacja pocztowa może zarejestrować się w celu obsługi schematu mailto:. Odpowiednia metoda unregisterProtocolHandler() umożliwia witrynie zrezygnowanie z rejestracji obsługującej protokół.

Intencja usunięcia | Stan platformy Chrome | Błąd Chromium

Usunięto komponenty internetowe w wersji 0

Komponenty internetowe w wersji 0 zostały usunięte z Chrome. Interfejsy API komponentu Web Komponenty w wersji 1 to standard platform internetowych, który jest udostępniany w Chrome, Safari, Firefox i (wkrótce) na Edge. Wskazówki dotyczące uaktualniania znajdziesz w artykule Aktualizacja komponentów sieciowych: więcej czasu na uaktualnienie do interfejsów API w wersji 1. Opisane poniżej funkcje zostały usunięte. Obejmuje to elementy wymienione poniżej.

Elementy niestandardowe

Intencja usunięcia | Stan platformy Chrome | Błąd Chromium

Importy HTML

Intencja usunięcia | Stan platformy Chrome | Błąd Chromium

model DOM

Intencja usunięcia | Stan platformy Chrome | Błąd Chromium

Usunięcie atrybutu -webkit-appearance:button w przypadku dowolnych elementów

Zmienia -webkit-appearance:button, aby działał tylko z przyciskami <button> i <input>. Jeśli w nieobsługiwanym elemencie określono button, ma on wygląd domyślny. Pozostałe słowa kluczowe typu -webkit-appearance mają już to ograniczenie.

Intencja usunięcia | Stan platformy Chrome | Błąd Chromium

Zasady wycofywania

Aby zapewnić prawidłowe działanie platformy, czasami usuwamy z niej interfejsy API, które działają zgodnie z oczekiwaniami. Jest wiele powodów, dla których możemy usunąć interfejs API, na przykład:

  • Zastąpią je nowsze interfejsy API.
  • Są one aktualizowane w sposób odzwierciedlający zmiany w specyfikacjach w celu zapewnienia zgodności i spójności z innymi przeglądarkami.
  • Są to wczesne eksperymenty, które nigdy nie sprawdziły się w innych przeglądarkach, dzięki czemu mogą zwiększyć obciążenie pomocy dla programistów stron internetowych.

Niektóre z tych zmian będą miały wpływ na niewielką liczbę witryn. Aby zapobiec problemom z wyprzedzeniem, staramy się powiadamiać o tym deweloperów, aby mogli wprowadzić niezbędne zmiany i utrzymać działanie witryny.

W Chrome obecnie dostępny jest proces wycofywania i usuwania interfejsów API. Ogólnie obejmuje on następujące zasady:

  • Ogłoszenie na liście adresowej blink-dev.
  • Gdy na stronie zostanie wykryte użycie danych, w konsoli Narzędzi deweloperskich w Chrome ustaw ostrzeżenia i podaj skalę czasu.
  • Zaczekaj, monitoruj, a potem usuń tę funkcję w miarę spadku wykorzystania.

Listę wszystkich wycofanych funkcji znajdziesz na chromestatus.com za pomocą wycofanego filtra , a usuniętych funkcji – usuniętego filtra. W tych postach spróbujemy też podsumować niektóre zmiany, rozumowanie i ścieżki migracji.