In bijna elke versie van Chrome zien we een aanzienlijk aantal updates en verbeteringen aan het product, de prestaties en ook de mogelijkheden van het webplatform. Dit artikel beschrijft de verouderingen en verwijderingen in Chrome 54, dat sinds 15 september in bèta is. Deze lijst kan op elk moment worden gewijzigd.
Navigatie uitschakelen in de unload-handler
TL;DR: Alle cross-origin navigatie wordt geblokkeerd in window.onunload
event handlers om Chrome in lijn te brengen met de HTML-specificatie, evenals Firefox en Safari.
Intentie tot verwijderen | Chromestatus Tracker | Chromium-bug
Eerdere versies van Chrome stonden cross-origin navigatie toe binnen window.onunload
door window.location.href = '#fragment'
in te stellen. Volgens de HTML-specificatie zijn alleen in-page navigaties toegestaan in de unload handlers, en in eerdere versies van Chrome werden andere navigatiemethoden geblokkeerd zoals vereist door de specificatie. Vanaf Chrome 54 worden dergelijke navigaties niet meer toegestaan om ons in lijn te brengen met de specificatie, evenals Firefox en Safari.
HTTP/0.9 verouderd
TL;DR: HTTP/0.9 is verouderd. Ontwikkelaars moeten overstappen op een latere versie, bij voorkeur HTTP/2.
Intentie tot verwijderen | Chromestatus Tracker | Chromium-bug
HTTP/0.9 is de voorloper van HTTP/1.x . Het mist veel functies van zijn opvolgers. Een specifiek probleem voor het moderne web is het ontbreken van responsheaders. Zonder deze headers is er geen manier om te verifiëren of een HTTP/0.9-respons daadwerkelijk een HTTP/0.9-respons is. Dit kan verschillende problemen veroorzaken, waaronder:
- Clients die bepaalde foutreacties behandelen als geldige HTTP/0.9-reacties.
- Servers die de aanvraagsocket niet sluiten, zorgen ervoor dat clients reacties behandelen als een hangende GET die óf eeuwig actief blijft óf totdat een gebruiker navigeert vanaf een pagina die de aanvraag heeft gedaan.
- Servers kunnen niet aan de browser doorgeven dat een verzoek is mislukt, wat problemen kan veroorzaken met de cacheheuristiek.
De enige waterdichte manier om problemen met HTTP/0.9 op te lossen, is door de ondersteuning volledig te verwijderen. Daarom is de ondersteuning voor HTTP/0.9 in Chrome 54 verwijderd.
Het gebruik van initTouchEvent
is verwijderd
TL;DR : initTouchEvent
is verouderd en vervangen door de TouchEvent
constructor
om de specificatie-naleving te verbeteren. Deze constructor wordt volledig verwijderd in Chrome 54.
Intentie tot verwijderen | Chromestatus Tracker | Chromium-bug
Ontwikkelaars kunnen al lange tijd synthetische aanraakgebeurtenissen in Chrome maken met behulp van de initTouchEvent
API. Deze worden vaak gebruikt om aanraakgebeurtenissen te simuleren, bijvoorbeeld voor het testen of automatiseren van gebruikersinterfaces op uw site. Sinds Chrome 49 geeft deze verouderde API de volgende waarschuwing weer.

TouchEvent.initTouchEvent
is verouderd en wordt rond september 2016 verwijderd in M53. Gebruik in plaats daarvan de TouchEvent
constructor. Zie https://www.chromestatus.com/features/5730982598541312 voor meer informatie. Afgezien van het feit dat deze wijziging niet in de Touch Events-specificatie staat, zijn er een aantal redenen waarom deze wijziging goed is . De Chrome-implementatie van initTouchEvent
was helemaal niet compatibel met Safari's initTouchEvent
API en verschilde van die van Firefox op Android. Tot slot is de TouchEvent
constructor veel gebruiksvriendelijker.
Om deze redenen hebben we besloten de specificatie te volgen in plaats van een API te onderhouden die noch gespecificeerd noch compatibel is met de enige andere implementatie. Ontwikkelaars die een alternatief nodig hebben, kunnen de TouchEvent
constructor gebruiken.
Omdat de iOS- en Android/Chrome-implementaties van de initTouchEvent
API zo enorm van elkaar verschilden, hadden sites vaak code in de trant van (en Firefox werd vaak vergeten)
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);
}
document.body.dispatchEvent(touchEvent);
Dit is vervelend, omdat het in de user-agent naar 'Android' zoekt en Chrome op Android deze veroudering zal herkennen en tegenkomen. Het kan echter nog niet worden verwijderd, omdat er nog een tijdje andere WebKit- en oudere Blink-gebaseerde browsers op Android zullen zijn die de oudere API moeten ondersteunen.
Om TouchEvent
op het web correct te verwerken, moet u uw code aanpassen om Firefox, IE Edge en Chrome te ondersteunen. Controleer hiervoor of TouchEvent
aanwezig is in het window
. Als het object een positieve "lengte" heeft (wat aangeeft dat het een constructor is die een argument accepteert), moet u dat gebruiken.
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);
KeyboardEvent.keyIdentifier-kenmerk verwijderd
TL;DR: De weinig ondersteunde eigenschap keyboardEvent.keyIdentifier
wordt verwijderd ten gunste van de op standaarden gebaseerde eigenschap KeyboardEvent.key
.
Intentie tot verwijderen | Chromestatus Tracker | Chromium-bug
Het kenmerk keyboardEvent.keyIdentifier
maakte in 2009 en 2010 kortstondig deel uit van een W3C-specificatie. Het werd echter alleen in WebKit geïmplementeerd.
Ontwikkelaars die dit kenmerk moeten vervangen, kunnen de op standaarden gebaseerde eigenschap KeyboardEvent.key
of de eigenschap KeyboardEvent.code
gebruiken (zoals beschreven in een artikel dat we afgelopen voorjaar hebben gepubliceerd ). De eerste heeft de breedste implementatiebasis en wordt ondersteund door alle belangrijke desktopbrowsers behalve Safari. De laatste wordt momenteel ondersteund in Chrome, Firefox en Opera. Het verwijderen van deze functie is bedoeld om de acceptatie van de eigenschap KeyboardEvent.key
te bevorderen. Apple heeft nog niet laten weten of dit zal worden ondersteund; de eveneens verouderde (maar nog niet uit Chrome verwijderde) eigenschappen KeyboardEvent.keyCode
en KeyboardEvent.charCode
zijn echter nog steeds beschikbaar in Safari.
Verwijder MediaStream-beëindigde gebeurtenis en kenmerk en on-beëindigd kenmerk
TL;DR: De ended
gebeurtenis en het kenmerk en de onended
gebeurtenis-handler worden verwijderd omdat ze uit de Media Capture en Streams-specificatie zijn verwijderd.
Intentie tot verwijderen | Chromestatus Tracker | Chromium-bug
Noch de ended
gebeurtenis, noch de onended
event handler maken al ongeveer drie jaar deel uit van de WebRTC-specificatie. Ontwikkelaars die gebeurtenissen willen volgen, kunnen MediaStreamTracks
gebruiken in plaats van MediaStreams
.
SVGSVGElement.viewPort afkeuren
De implementatie werkt sinds 2012 niet meer in Chrome. Het kenmerk is in andere browsers helemaal niet aanwezig en is uit de specificatie verwijderd. Om deze redenen wordt de eigenschap afgeschaft. Verwijdering wordt verwacht in Chrome 55.
Intentie tot verwijderen | Chromestatus Tracker | Chromium-bug
SVGViewElement.viewTarget verouderd
Het kenmerk SVGViewElement.viewTarget
maakt geen deel uit van de SVG2.0-specificatie en wordt weinig of niet gebruikt. Dit kenmerk is verouderd in Chrome 54. Verwijdering wordt verwacht in Chrome 56.
Intentie tot verwijderen | Chromestatus Tracker | Chromium-bug
SVGZoomEvent verwijderen
De SVGZoomEvent
maakt geen deel uit van de SVG2.0-specificatie en werkt niet in Chromium. Desondanks is de functie nog steeds detecteerbaar, wat tot verwarring bij ontwikkelaars kan leiden. De functie zal worden verwijderd.
Intentie tot verwijderen | Chromestatus Tracker | Chromium-bug