Em quase todas as versões do Chrome, há um número significativo de atualizações e melhorias no produto, no desempenho e também nos recursos da plataforma da Web. Este artigo descreve as descontinuações e remoções no Chrome 54, que está na versão Beta desde 15 de setembro. Essa lista está sujeita a mudanças a qualquer momento.
Desativar navegações no manipulador de descarregamento
Resumo:todas as navegações entre origens serão proibidas nos manipuladores de eventos window.onunload para alinhar o Chrome à especificação HTML, bem como ao Firefox e ao Safari.
Intenção de remoção | Rastreador do Chromestatus | Bug do Chromium
As versões anteriores do Chrome permitiam que a navegação entre origens fosse interrompida em window.onunload. ao definir window.location.href = '#fragment'. De acordo com a especificação HTML, apenas navegações na página são permitidas nos manipuladores de descarregamento. Em versões anteriores do Chrome, outros métodos de navegação eram bloqueados conforme exigido pela especificação. A partir do Chrome 54, essas navegações serão proibidas para que o navegador fique em conformidade com a especificação, assim como o Firefox e o Safari.
HTTP/0.9 descontinuado
TL;DR:o HTTP/0.9 foi descontinuado. Os desenvolvedores precisam migrar para uma versão mais recente, de preferência HTTP/2.
Intenção de remoção | Rastreador do Chromestatus | Bug do Chromium
O HTTP/0.9 é o antecessor do HTTP/1.x. Ele não tem muitos recursos dos sucessores. Uma preocupação específica da Web moderna é a falta de cabeçalhos de resposta. Sem eles, não há como verificar se uma resposta HTTP/0.9 é realmente uma resposta HTTP/0.9. Isso pode causar vários problemas. Por exemplo:
- Clientes que tratam determinadas respostas de erro como respostas HTTP/0.9 válidas.
- Servidores que não fecham o soquete de solicitação, fazendo com que os clientes tratem as respostas como um GET pendente que permanece ativo eternamente ou até que um usuário navegue de uma página que fez a solicitação.
- Servidores que não conseguem indicar ao navegador que uma solicitação falhou, o que pode causar problemas com heurísticas de cache.
A única maneira infalível de corrigir problemas com HTTP/0.9 é remover o suporte por completo. Por isso, o suporte ao HTTP/0.9 foi removido no Chrome 54.
O uso de initTouchEvent é removido
TL;DR:
initTouchEvent
foi descontinuado em favor do
TouchEvent
constructor para melhorar
a conformidade com a especificação e será removido completamente no Chrome 54.
Intenção de remoção | Rastreador do Chromestatus | Bug do Chromium
Há muito tempo, os desenvolvedores podem criar eventos de toque sintéticos no Chrome
usando a API initTouchEvent. Eles são usados com frequência para simular eventos de toque
para testes ou automação de algumas interfaces do usuário no seu site. Desde o Chrome 49, essa API descontinuada mostra o seguinte aviso .
TouchEvent.initTouchEvent foi descontinuado e será removido no M53,
por volta de setembro de 2016. Use o construtor TouchEvent. Consulte
https://www.chromestatus.com/features/5730982598541312 para mais detalhes.
Além de não estar na especificação de eventos de toque, há vários motivos para
essa mudança ser boa.
A implementação do Chrome de initTouchEvent não era compatível com a API initTouchEvent do Safari e era diferente da do Firefox no Android. E, por fim, o construtor TouchEvent é muito mais fácil de usar.
Por esses motivos, decidimos seguir a especificação em vez de manter uma API
que não é especificada nem compatível com a única outra implementação.
Os desenvolvedores que precisarem de uma alternativa podem usar o construtor TouchEvent.
Como as implementações da API initTouchEvent em iOS e Android/Chrome eram muito diferentes, os sites geralmente tinham código semelhante a (esquecendo o Firefox com frequência)
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);
Isso é ruim porque procura "Android" no user agent, e o Chrome no Android vai corresponder e atingir essa descontinuação. No entanto, ele não pode ser removido ainda porque haverá outros navegadores baseados em WebKit e Blink mais antigos no Android por um tempo, e você ainda precisará oferecer suporte à API mais antiga.
Para processar corretamente TouchEvents na Web, mude seu código para
compatibilidade com Firefox, IE Edge e Chrome. Para isso, verifique a existência de TouchEvent
no objeto window. Se ele tiver um "length" positivo (indicando que é um
construtor que recebe um argumento), use-o.
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);
Atributo KeyboardEvent.keyIdentifier removido
Resumo:a propriedade keyboardEvent.keyIdentifier, que tem pouco suporte, está sendo removida em favor da propriedade KeyboardEvent.key, baseada em padrões.
Intenção de remoção | Rastreador do Chromestatus | Bug do Chromium
O atributo keyboardEvent.keyIdentifier fez parte brevemente de uma especificação do W3C em 2009 e 2010. No entanto, ele só foi implementado no WebKit.
Os desenvolvedores que precisam substituir esse atributo podem usar a propriedade KeyboardEvent.key baseada em padrões ou a propriedade KeyboardEvent.code, conforme descrito em um artigo que publicamos na primavera passada. O primeiro tem a maior base de implementação, sendo compatível com todos os principais navegadores para computador, exceto o Safari. No momento, o último é compatível com Chrome, Firefox e Opera. A remoção desse recurso tem como objetivo impulsionar a adoção da propriedade KeyboardEvent.key. A Apple não informou se vai oferecer suporte a isso. No entanto, as propriedades KeyboardEvent.keyCode e KeyboardEvent.charCode, que também foram descontinuadas (mas ainda não removidas do Chrome), ainda estão disponíveis no Safari.
Remover o evento e o atributo MediaStream ended e o atributo onended
TL;DR:o evento e o atributo ended e o manipulador de eventos onended estão sendo removidos porque foram removidos da especificação Media Capture and Streams.
Intenção de remoção | Rastreador do Chromestatus | Bug do Chromium
Nem o evento ended nem o manipulador de eventos onended fazem parte da especificação WebRTC há cerca de três anos. Os desenvolvedores que quiserem monitorar eventos precisam usar MediaStreamTracks em vez de MediaStreams.
Descontinuar SVGSVGElement.viewPort
A implementação não funciona no Chrome desde 2012. O atributo não está presente em outros navegadores e foi removido da especificação. Por isso, a propriedade está sendo descontinuada. A remoção está prevista para o Chrome 55.
Intenção de remoção | Rastreador do Chromestatus | Bug do Chromium
Descontinuar SVGViewElement.viewTarget
O atributo SVGViewElement.viewTarget não faz parte da especificação SVG2.0 e é pouco ou nada usado. Esse atributo foi descontinuado no Chrome 54. A remoção está prevista para o Chrome 56.
Intenção de remoção | Rastreador do Chromestatus | Bug do Chromium
Remover SVGZoomEvent
O SVGZoomEvent não faz parte da especificação SVG2.0 e não funciona no Chromium. Apesar disso, o recurso ainda é detectável, o que pode confundir os desenvolvedores. Ele será removido.
Intenção de remoção | Rastreador do Chromestatus | Bug do Chromium