In quasi tutte le versioni di Chrome, vediamo un numero significativo di aggiornamenti e miglioramenti del prodotto, delle sue prestazioni e anche delle funzionalità della piattaforma web. Questo articolo descrive i ritiri e le rimozioni in Chrome 54, che è in versione beta dal 15 settembre. Questo elenco è soggetto a modifiche in qualsiasi momento.
Disattivare le navigazioni nel gestore di unload
Riepilogo:tutte le navigazioni multiorigine non saranno consentite nei gestori di eventi window.onunload per allineare Chrome alla specifica HTML, nonché a Firefox e Safari.
Intent to Remove | Chromestatus Tracker | Chromium Bug
Le versioni precedenti di Chrome consentivano di interrompere la navigazione tra origini diverse all'interno di window.onunload. impostando window.location.href = '#fragment'. Secondo le specifiche HTML, nei gestori di scaricamento sono consentite solo le navigazioni all'interno della pagina e nelle versioni precedenti di Chrome altri metodi di navigazione sono stati bloccati come richiesto dalle specifiche. A partire da Chrome 54, queste navigazioni non saranno consentite per allinearsi alle specifiche, nonché a Firefox e Safari.
HTTP/0.9 deprecato
TL;DR: HTTP/0.9 è obsoleto. Gli sviluppatori devono passare a una versione successiva, preferibilmente HTTP/2.
Intent to Remove | Chromestatus Tracker | Chromium Bug
HTTP/0.9 è il predecessore di HTTP/1.x. Mancano molte funzionalità dei suoi successori. Un problema particolare per il web moderno è la mancanza di intestazioni delle risposte. Senza, non è possibile verificare che una risposta HTTP/0.9 sia effettivamente una risposta HTTP/0.9. Ciò può causare diversi problemi. Alcuni esempi includono, tra gli altri problemi:
- Client che trattano determinate risposte di errore come risposte HTTP/0.9 valide.
- Server che non chiudono il socket di richiesta, facendo sì che i client trattino le risposte come GET in attesa che rimangano attive per sempre o finché un utente non esce da una pagina che ha effettuato la richiesta.
- Server che non sono in grado di indicare al browser che una richiesta non è andata a buon fine, il che può causare problemi con l'euristica della memorizzazione nella cache.
L'unico modo infallibile per risolvere i problemi relativi a HTTP/0.9 è rimuovere completamente il supporto. Per questo motivo, il supporto di HTTP/0.9 viene rimosso in Chrome 54.
L'utilizzo di initTouchEvent è stato rimosso
Riepilogo:
initTouchEvent
è stato ritirato a favore di
TouchEvent
constructor per migliorare
la conformità alle specifiche e verrà rimosso completamente in Chrome 54.
Intent to Remove | Chromestatus Tracker | Chromium Bug
Per molto tempo gli sviluppatori hanno potuto creare eventi tocco sintetici in Chrome
utilizzando l'API initTouchEvent. Vengono spesso utilizzati per simulare eventi tocco
per testare o automatizzare alcune UI del tuo sito. A partire da Chrome 49, questa API ritirata mostra il seguente avviso .
TouchEvent.initTouchEvent è deprecato e verrà rimosso nella versione M53,
intorno a settembre 2016. Utilizza invece il costruttore TouchEvent. Per maggiori dettagli, visita la pagina
https://www.chromestatus.com/features/5730982598541312.
Oltre a non essere inclusa nella specifica degli eventi tocco, ci sono diversi motivi per cui
questa modifica è positiva.
L'implementazione di initTouchEvent in Chrome non era compatibile con l'API initTouchEvent di Safari ed era diversa da quella di Firefox su Android. Infine, il costruttore TouchEvent è molto più facile da usare.
Per questi motivi, abbiamo deciso di seguire le specifiche anziché mantenere un'API
che non è specificata né compatibile con l'unica altra implementazione.
Gli sviluppatori che necessitano di un'alternativa devono utilizzare il costruttore TouchEvent.
Poiché le implementazioni iOS e Android/Chrome dell'API initTouchEvent
erano molto diverse, i siti spesso avevano
codice simile a
(dimenticando spesso Firefox)
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);
Questo è un problema perché cerca "Android" nell'user agent e Chrome su Android corrisponderà e raggiungerà questa deprecazione. Non può ancora essere rimosso perché su Android saranno ancora presenti per un po' altri browser basati su WebKit e Blink meno recenti che dovranno ancora supportare l'API precedente.
Per gestire correttamente TouchEvent sul web, devi modificare il codice in modo da supportare Firefox, IE Edge e Chrome controllando l'esistenza di TouchEvent sull'oggetto window e, se ha una "lunghezza" positiva (a indicare che è un costruttore che accetta un argomento), devi utilizzarlo.
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);
Attributo KeyboardEvent.keyIdentifier rimosso
TL;DR: la proprietà keyboardEvent.keyIdentifier, poco supportata, verrà rimossa a favore della proprietà KeyboardEvent.key basata sugli standard.
Intent to Remove | Chromestatus Tracker | Chromium Bug
L'attributo keyboardEvent.keyIdentifier ha fatto brevemente parte di una specifica W3C nel 2009 e nel 2010. Tuttavia, è stato implementato solo in WebKit.
Gli sviluppatori che devono sostituire questo attributo possono utilizzare la proprietà KeyboardEvent.key basata sugli standard o la proprietà KeyboardEvent.code (come descritto in un articolo pubblicato la scorsa primavera). Il primo ha la base di implementazione più ampia, essendo supportato su tutti i principali browser desktop, ad eccezione di Safari. Quest'ultimo è attualmente supportato su Chrome, Firefox e Opera. La rimozione di questa funzionalità ha lo scopo di favorire l'adozione della proprietà KeyboardEvent.key. Apple non si è ancora espressa in merito al supporto di questa funzionalità. Tuttavia, le proprietà KeyboardEvent.keyCode e KeyboardEvent.charCode, anch'esse deprecate (ma non ancora rimosse da Chrome), sono ancora disponibili su Safari.
Rimuovi l'attributo e l'evento MediaStream ended e l'attributo onended
In breve:l'attributo e l'evento ended e il gestore di eventi onended vengono rimossi perché sono stati rimossi dalla specifica Media Capture and Streams.
Intent to Remove | Chromestatus Tracker | Chromium Bug
Né l'evento ended né il gestore eventi onended fanno parte della specifica WebRTC da circa tre anni. Gli sviluppatori che vogliono guardare gli eventi devono utilizzare MediaStreamTracks anziché MediaStreams.
Depreca SVGSVGElement.viewPort
L'implementazione non funziona in Chrome dal 2012. L'attributo non è presente in altri browser ed è stato rimosso dalla specifica. Per questi motivi, la proprietà verrà ritirata. La rimozione è prevista in Chrome 55.
Intent to Remove | Chromestatus Tracker | Chromium Bug
Depreca SVGViewElement.viewTarget
L'attributo SVGViewElement.viewTarget non fa parte della specifica SVG2.0 e il suo utilizzo è minimo o inesistente. Questo attributo è ritirato in Chrome 54. La rimozione è prevista in Chrome 56.
Intent to Remove | Chromestatus Tracker | Chromium Bug
Rimuovi SVGZoomEvent
L'elemento SVGZoomEvent non fa parte della specifica SVG2.0 e non funziona in Chromium. Nonostante ciò, la funzionalità è ancora rilevabile, il che potrebbe creare confusione tra gli sviluppatori. Verrà rimosso.