W niemal każdej wersji Chrome wprowadzamy wiele aktualizacji i ulepszeń produktu, jego wydajności oraz możliwości platformy internetowej. W tym artykule opisujemy wycofane i usunięte funkcje w Chrome 54, która od 15 września jest dostępna w wersji beta. Ta lista może w każdej chwili ulec zmianie.
Wyłączanie nawigacji w module obsługi wyładowywania
TL;DR: wszystkie nawigacje między domenami zostaną zablokowane w procedurach obsługi zdarzeń window.onunload
, aby dostosować Chrome do specyfikacji HTML, a także do przeglądarek Firefox i Safari.
Zamiar usunięcia | Śledzenie stanu Chrome | Błąd w Chromium
W poprzednich wersjach Chrome można było przerywać nawigację między domenami w elemencie window.onunload
. ustawiając window.location.href = '#fragment'
. Zgodnie ze specyfikacją HTML w procedurach obsługi wyładowania dozwolone są tylko nawigacje na stronie, a w poprzednich wersjach Chrome inne metody nawigacji były blokowane zgodnie ze specyfikacją. Od Chrome 54 takie nawigacje będą niedozwolone, aby dostosować przeglądarkę do specyfikacji, a także do przeglądarek Firefox i Safari.
HTTP/0.9 nieaktualny
TL;DR: protokół HTTP/0.9 został wycofany. Deweloperzy powinni przejść na nowszą wersję, najlepiej HTTP/2.
Zamiar usunięcia | Śledzenie stanu Chrome | Błąd w Chromium
HTTP/0.9 to poprzednik HTTP/1.x. Brakuje w nim wielu funkcji, które mają jego następcy. Szczególnym problemem współczesnego internetu jest brak nagłówków odpowiedzi. Bez nich nie można sprawdzić, czy odpowiedź HTTP/0.9 jest rzeczywiście odpowiedzią HTTP/0.9. Może to powodować kilka problemów. Przykłady problemów:
- Klienci, którzy traktują niektóre odpowiedzi z błędami jako prawidłowe odpowiedzi HTTP/0.9.
- Serwery, które nie zamykają gniazda żądania, co powoduje, że klienci traktują odpowiedzi jako zawieszone żądanie GET, które pozostaje aktywne bezterminowo lub do momentu, gdy użytkownik opuści stronę, która wysłała żądanie.
- Serwery, które nie mogą poinformować przeglądarki, że żądanie nie zostało zrealizowane, co może powodować problemy z heurystyką buforowania.
Jedynym niezawodnym sposobem na rozwiązanie problemów z protokołem HTTP/0.9 jest całkowite wyłączenie jego obsługi. Dlatego w Chrome 54 usunęliśmy obsługę HTTP/0.9.
Usunięcie użycia initTouchEvent
W skrócie:
initTouchEvent
został wycofany na rzecz
TouchEvent
constructor
, aby zwiększyć zgodność ze specyfikacją. Zostanie całkowicie usunięty w Chrome 54.
Zamiar usunięcia | Śledzenie stanu Chrome | Błąd w Chromium
Od dłuższego czasu deweloperzy mogą tworzyć w Chrome syntetyczne zdarzenia dotykowe za pomocą interfejsu initTouchEvent
API. Są one często używane do symulowania zdarzeń dotykowych na potrzeby testowania lub automatyzowania niektórych interfejsów w witrynie. Od wersji Chrome 49 ten wycofany interfejs API wyświetla to ostrzeżenie .

TouchEvent.initTouchEvent
jest wycofany i zostanie usunięty w M53,
czyli około września 2016 r. Zamiast niego użyj konstruktora TouchEvent
. Więcej informacji znajdziesz na stronie
https://www.chromestatus.com/features/5730982598541312
Oprócz tego, że nie jest to zgodne ze specyfikacją zdarzeń dotykowych, istnieje kilka powodów, dla których ta zmiana jest korzystna.
Implementacja initTouchEvent
w Chrome nie była w ogóle zgodna z interfejsem initTouchEvent
w Safari i różniła się od implementacji w Firefoksie na Androida. I wreszcie konstruktor TouchEvent
jest znacznie łatwiejszy w użyciu.
Z tych powodów zdecydowaliśmy się postępować zgodnie ze specyfikacją, zamiast utrzymywać interfejs API, który nie jest zgodny ze specyfikacją ani z jedynym innym wdrożeniem.
Deweloperzy, którzy potrzebują alternatywnego rozwiązania, powinni użyć konstruktora TouchEvent
.
Implementacje interfejsu initTouchEvent
API w systemach iOS i Android/Chrome tak bardzo się od siebie różniły, że strony często zawierały kod podobny do tego (często zapominając o Firefoxie):
var event = document.createEvent('TouchEvent');
if(ua === 'Android') {
event.initTouchEvent(touchItem, touchItem, touchItem, "touchstart", window,
300, 300, 200, 200, false, false, false, false);
} else {
event.initTouchEvent("touchstart", false, false, window, 0, 300, 300, 200,
200, false, false, false, false, touches, targetTouches, changedTouches, 0, 0);
}
docum
ent.body.dispatchEvent(touchEvent);
To źle, ponieważ wyszukuje „Androida” w kliencie użytkownika, a Chrome na Androidzie będzie pasować do tego wzorca i zostanie wycofany. Nie można go jeszcze usunąć, ponieważ przez jakiś czas na Androidzie będą działać inne przeglądarki oparte na WebKit i starszych wersjach Blink, które nadal będą wymagać obsługi starszego interfejsu API.
Aby prawidłowo obsługiwać TouchEvent
w internecie, zmień kod, aby obsługiwał przeglądarki Firefox, IE Edge i Chrome. W tym celu sprawdź, czy w obiekcie window
istnieje TouchEvent
, a jeśli ma on dodatnią „długość” (co oznacza, że jest konstruktorem, który przyjmuje argument), użyj go.
if('TouchEvent' in&& window TouchEvent>.length 0) {
var touch = new Touch({
identifier: 42,
target: document.body,
clientX: 200,
clientY: 200,
screenX: 300,
screenY: 300,
pageX: 200,
pageY: 200,
radiusX: 5,
radiusY: 5
});
event = new TouchEvent("touchstart", {
cancelable: true,
bubbles: true,
touches: [touch],
targetTouches: [touch],
changedTouches: [touch]
});
}
else {
event = document.createEvent('TouchEvent');
if(ua === 'Android') {
event.initTouchEvent(touchItem, touchItem, touchItem, "touchstart", window,
300, 300, 200, 200, false, false, false, false);
} else {
event.initTouchEvent("touchstart", false, false, window, 0, 300, 300, 200,
200, false, false, false, false, touches, targetTouches,
changedTouches, 0, 0);
}
}
document.body.dispatchEvent(touchEvent);
Usunięcie atrybutu KeyboardEvent.keyIdentifier
TL;DR: mało obsługiwana właściwość keyboardEvent.keyIdentifier
zostanie usunięta na rzecz opartej na standardach właściwości KeyboardEvent.key
.
Zamiar usunięcia | Śledzenie stanu Chrome | Błąd w Chromium
Atrybut keyboardEvent.keyIdentifier
był przez krótki czas częścią specyfikacji W3C w latach 2009–2010. Został on jednak zaimplementowany tylko w WebKit.
Deweloperzy, którzy chcą zastąpić ten atrybut, mogą użyć właściwości KeyboardEvent.key
lub KeyboardEvent.code
(zgodnie z opisem w artykule z zeszłej wiosny). Pierwszy z nich ma najszerszą bazę wdrożeń, ponieważ jest obsługiwany we wszystkich najważniejszych przeglądarkach na komputery z wyjątkiem Safari. Ta druga jest obecnie obsługiwana w przeglądarkach Chrome, Firefox i Opera. Usunięcie tej funkcji ma na celu zwiększenie popularności usługi KeyboardEvent.key
. Apple nie poinformowało, czy będzie obsługiwać tę funkcję. Wycofane (ale jeszcze nie usunięte z Chrome) właściwości KeyboardEvent.keyCode
i KeyboardEvent.charCode
są nadal dostępne w Safari.
Usuwanie zdarzenia MediaStream ended, atrybutu i atrybutu onended
TL;DR: zdarzenie i atrybut ended
oraz moduł obsługi zdarzeń onended
zostaną usunięte, ponieważ zostały usunięte ze specyfikacji Media Capture and Streams.
Zamiar usunięcia | Śledzenie stanu Chrome | Błąd w Chromium
Ani zdarzenie ended
, ani jego obsługa nie są częścią specyfikacji WebRTC od około 3 lat.onended
Deweloperzy, którzy chcą obserwować zdarzenia, powinni używać MediaStreamTracks
zamiast MediaStreams
.
Wycofanie SVGSVGElement.viewPort
Implementacja nie działa w Chrome od 2012 roku. W innych przeglądarkach ten atrybut w ogóle nie występuje i został usunięty ze specyfikacji. Z tego powodu ta właściwość jest wycofywana. Usunięcie jest planowane w Chrome 55.
Zamiar usunięcia | Śledzenie stanu Chrome | Błąd w Chromium
Wycofanie SVGViewElement.viewTarget
Atrybut SVGViewElement.viewTarget
nie jest częścią specyfikacji SVG2.0, a jego użycie jest niewielkie lub nie występuje. Ten atrybut został wycofany w Chrome 54. Usunięcie jest planowane w Chrome 56.
Zamiar usunięcia | Śledzenie stanu Chrome | Błąd w Chromium
Usuń SVGZoomEvent
Element SVGZoomEvent
nie jest częścią specyfikacji SVG2.0 i nie działa w Chromium. Mimo to funkcja jest nadal wykrywalna, co może wprowadzać programistów w błąd. Zostanie on usunięty.