En casi todas las versiones de Chrome, vemos una cantidad significativa de actualizaciones y mejoras en el producto, su rendimiento y las capacidades de la plataforma web. En este artículo, se describen las bajas y los retiros en Chrome 54, que está en versión beta desde el 15 de septiembre. Esta lista está sujeta a cambios en cualquier momento.
Inhabilita la navegación en el controlador de descarga
TL;DR: No se permitirán todas las navegaciones de origen cruzado en los controladores de eventos window.onunload para que Chrome se ajuste a la especificación de HTML, así como a Firefox y Safari.
Intención de quitar | Seguimiento de Chromestatus | Error de Chromium
Las versiones anteriores de Chrome permitían que se interrumpiera la navegación de origen cruzado dentro de window.onunload. estableciendo window.location.href = '#fragment'. Según la especificación de HTML, solo se permiten las navegaciones en la página en los controladores de descarga, y en versiones anteriores de Chrome se bloquearon otros métodos de navegación según lo requiere la especificación. A partir de Chrome 54, no se permitirán esas navegaciones para alinearnos con la especificación, así como con Firefox y Safari.
Se dejó de usar HTTP/0.9
Resumen: HTTP/0.9 es una versión obsoleta. Los desarrolladores deben migrar a una versión posterior, de preferencia HTTP/2.
Intención de quitar | Seguimiento de Chromestatus | Error de Chromium
HTTP/0.9 es el predecesor de HTTP/1.x. Carece de muchas funciones de sus sucesores. Una preocupación particular de la Web moderna es la falta de encabezados de respuesta. Sin ellos, no hay forma de verificar que una respuesta HTTP/0.9 sea realmente una respuesta HTTP/0.9. Esto puede causar varios problemas. Entre otros problemas, se incluyen los siguientes:
- Clientes que tratan ciertas respuestas de error como respuestas HTTP/0.9 válidas
- Servidores que no cierran el socket de solicitud, lo que hace que los clientes traten las respuestas como un GET pendiente que permanece activo eternamente o hasta que un usuario navega desde una página que realizó la solicitud.
- Servidores que no pueden indicarle al navegador que falló una solicitud, lo que puede causar problemas con las heurísticas de almacenamiento en caché.
La única forma infalible de solucionar los problemas con HTTP/0.9 es quitar la compatibilidad por completo. Por eso, se quitó la compatibilidad con HTTP/0.9 en Chrome 54.
Se quitó el uso de initTouchEvent
TL;DR:
initTouchEvent
quedó obsoleta y se reemplazó por
TouchEvent
constructor para mejorar
el cumplimiento de las especificaciones y se quitará por completo en Chrome 54.
Intención de quitar | Seguimiento de Chromestatus | Error de Chromium
Durante mucho tiempo, los desarrolladores pudieron crear eventos táctiles sintéticos en Chrome con la API de initTouchEvent. Se usan con frecuencia para simular eventos táctiles, ya sea para probar o automatizar algunas IU en tu sitio. Desde Chrome 49, esta API obsoleta muestra la siguiente advertencia .
TouchEvent.initTouchEvent dejó de estar disponible y se quitará en M53,
alrededor de septiembre de 2016. En su lugar, usa el constructor TouchEvent. Consulta
https://www.chromestatus.com/features/5730982598541312 para obtener más detalles.
Además de no estar en la especificación de Touch Events, hay varios motivos por los que este cambio es bueno.
La implementación de initTouchEvent en Chrome no era compatible con la API de initTouchEvent de Safari y era diferente a la de Firefox en Android. Por último, el constructor TouchEvent es mucho más fácil de usar.
Por estos motivos, decidimos seguir la especificación en lugar de mantener una API que no está especificada ni es compatible con la única otra implementación.
Los desarrolladores que necesiten una alternativa deben usar el constructor TouchEvent.
Debido a que las implementaciones de la API de initTouchEvent para iOS y Android/Chrome eran muy diferentes, los sitios solían tener código similar al siguiente (y, a menudo, olvidaban 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);
Esto es incorrecto porque busca "Android" en el encabezado User-Agent, y Chrome en Android coincidirá con esta baja y la activará. Sin embargo, aún no se puede quitar, ya que habrá otros navegadores basados en WebKit y Blink más antiguos en Android durante un tiempo, por lo que aún deberás admitir la API anterior.
Para controlar correctamente TouchEvent en la Web, debes cambiar tu código para que admita Firefox, IE Edge y Chrome. Para ello, verifica la existencia de TouchEvent en el objeto window y, si tiene una "longitud" positiva (lo que indica que es un constructor que toma un argumento), debes usarlo.
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);
Se quitó el atributo KeyboardEvent.keyIdentifier
TL;DR: Se quitará la propiedad keyboardEvent.keyIdentifier, que tiene poco soporte, y se reemplazará por la propiedad KeyboardEvent.key basada en estándares.
Intención de quitar | Seguimiento de Chromestatus | Error de Chromium
El atributo keyboardEvent.keyIdentifier formó parte brevemente de una especificación de W3C en 2009 y 2010. Sin embargo, solo se implementó en WebKit.
Los desarrolladores que necesiten reemplazar este atributo pueden usar la propiedad KeyboardEvent.key basada en estándares o la propiedad KeyboardEvent.code (como se describe en un artículo que publicamos la primavera pasada). El primero tiene la base de implementación más amplia, ya que se admite en todos los navegadores de escritorio principales, excepto Safari. Actualmente, esta última es compatible con Chrome, Firefox y Opera. El objetivo de quitar esta función es impulsar la adopción de la propiedad KeyboardEvent.key. Apple no ha informado si admitirá esta propiedad. Sin embargo, las propiedades KeyboardEvent.keyCode y KeyboardEvent.charCode, que también dejaron de estar disponibles (pero aún no se quitaron de Chrome), siguen disponibles en Safari.
Se quitaron el evento y el atributo ended de MediaStream, y el atributo onended.
Resumen: Se quitarán el evento y el atributo ended, y el controlador de eventos onended porque se quitaron de la especificación de Media Capture and Streams.
Intención de quitar | Seguimiento de Chromestatus | Error de Chromium
Ni el evento ended ni el controlador de eventos onended forman parte de la especificación de WebRTC desde hace aproximadamente tres años. Los desarrolladores que deseen observar eventos deben usar MediaStreamTracks en lugar de MediaStreams.
Se dio de baja SVGSVGElement.viewPort
La implementación no funciona en Chrome desde 2012. El atributo no está presente en absoluto en otros navegadores y se quitó de la especificación. Por estos motivos, la propiedad dejará de estar disponible. Se prevé que se quitará en Chrome 55.
Intención de quitar | Seguimiento de Chromestatus | Error de Chromium
Se dio de baja SVGViewElement.viewTarget
El atributo SVGViewElement.viewTarget no forma parte de la especificación SVG 2.0 y su uso es escaso o inexistente. Este atributo dejó de estar disponible en Chrome 54. Se prevé que se quitará en Chrome 56.
Intención de quitar | Seguimiento de Chromestatus | Error de Chromium
Quita SVGZoomEvent
El elemento SVGZoomEvent no forma parte de la especificación SVG 2.0 y no funciona en Chromium. A pesar de que la función sigue siendo detectable, lo que puede generar confusión en los desarrolladores. Se quitará.
Intención de quitar | Seguimiento de Chromestatus | Error de Chromium