Em quase todas as versões do Chrome, vemos um número significativo de atualizações e melhorias no produto, seu desempenho e também nos recursos da plataforma da Web. Este artigo descreve as descontinuações e remoções do Chrome 54, que está na versão Beta desde 15 de setembro. Essa lista está sujeita a alterações a qualquer momento.
Desativar navegações no gerenciador de descarregamento
Texto longo, leia o resumo:nenhuma navegação de origem cruzada será proibida em manipuladores de eventos window.onunload
para trazer o Chrome inline com a especificação HTML, bem como o Firefox e o Safari.
Intenção de remover | Rastreador de status do Chrome | Bug do Chromium
As versões anteriores do Chrome permitiam que a navegação em origem cruzada fosse interrompida em window.onunload
. definindo window.location.href = '#fragment'
. De acordo com a especificação HTML, somente navegações na página são permitidas nos gerenciadores de descarregamento e, nas versões anteriores do Chrome, outros métodos de navegação eram bloqueados conforme exigido pela especificação. A partir do Chrome 54, esse tipo de navegação não estará mais alinhado à especificação, assim como no Firefox e no Safari.
HTTP/0.9 descontinuado
Texto longo, leia o resumo: o uso de HTTP/0.9 foi descontinuado. Os desenvolvedores precisam mudar para uma versão posterior, de preferência HTTP/2.
Intenção de remover | Rastreador de status do Chrome | Bug do Chromium
HTTP/0.9 é o predecessor do HTTP/1.x. Ela não tem muitas características de seus sucessores. Uma preocupação particular 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. Alguns exemplos incluem, entre outros problemas:
- 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 suspenso que permanece ativo eternamente ou até que o 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 a heurística de cache.
A única maneira infalível de corrigir problemas com o HTTP/0.9 é remover o suporte completamente. É por isso que a compatibilidade com HTTP/0.9 foi removida no Chrome 54.
O uso de initTouchEvent
foi removido
Texto longo, leia o resumo: o
initTouchEvent
foi descontinuado e substituído pelo
TouchEvent
constructor
para melhorar
a conformidade com as especificações e será totalmente removido no Chrome 54.
Intenção de remover | Rastreador de status do Chrome | 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 testar ou automatizar algumas interfaces no seu site. Desde o Chrome 49, essa API descontinuada mostra o seguinte aviso:
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 de initTouchEvent
no Chrome não era compatível com a API initTouchEvent
do Safari e era diferente do Firefox no Android. 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 precisam de uma alternativa precisam usar o construtor TouchEvent
.
Como as implementações da API initTouchEvent
em iOS e Android/Chrome eram muito diferentes, os sites muitas vezes tinham códigos na linha de (geralmente esquecendo o 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);
Isso é ruim, porque ele procura "Android" no user agent e no Chrome no Android vão ser correspondentes e vão chegar à descontinuação. Ela ainda não pode ser removida, mas haverá outros navegadores WebKit e mais antigos baseados no Blink no Android por um tempo e você ainda vai precisar oferecer suporte à API mais antiga.
Para processar corretamente TouchEvent
s na Web, altere seu código para
oferecer suporte ao Firefox, ao IE Edge e ao Chrome. Para isso, verifique a existência de TouchEvent
no objeto window
e, se ele tem um "comprimento" positivo (indicando que é um
construtor que usa um argumento), use isso.
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);
O atributo KeyboardEvent.keyIdentifier foi removido
Texto longo, leia o resumo:a propriedade keyboardEvent.keyIdentifier
com pouco suporte está sendo removida em favor da propriedade KeyboardEvent.key
baseada em padrões.
Intenção de remover | Rastreador de status do Chrome | Bug do Chromium
O atributo keyboardEvent.keyIdentifier
fez parte brevemente de uma especificação 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 fizemos na primavera passada. O primeiro tem a base de implementação mais ampla e é compatível com todos os principais navegadores para computador, exceto o Safari. No momento, essa versão é compatível com Chrome, Firefox e Opera. A remoção desse recurso tem como objetivo incentivar a adoção da propriedade KeyboardEvent.key
. A Apple não informou se vai oferecer suporte a esse recurso. No entanto, as propriedades KeyboardEvent.keyCode
e KeyboardEvent.charCode
descontinuadas (mas ainda não removidas do Chrome) ainda estão disponíveis no Safari.
Remoção do evento, atributo e atributo onended do MediaStream
Texto longo, leia o resumo:o evento e o atributo ended
e o manipulador de eventos onended
estão sendo removidos porque foram removidos da especificação de captura de mídia e streams.
Intenção de remover | Rastreador de status do Chrome | 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 querem assistir eventos precisam usar MediaStreamTracks
em vez de MediaStreams
.
Suspensão do uso de 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 esses motivos, a propriedade está sendo descontinuada. A remoção está prevista para o Chrome 55.
Intenção de remover | Rastreador de status do Chrome | Bug do Chromium
O uso de SVGViewElement.viewTarget foi descontinuado.
O atributo SVGViewElement.viewTarget
não faz parte da especificação SVG2.0, e o uso dele é pequeno ou inexistente. Esse atributo foi descontinuado no Chrome 54. A remoção está prevista no Chrome 56.
Intenção de remover | Rastreador de status do Chrome | Bug do Chromium
Remover SVGZoomEvent
O SVGZoomEvent
não faz parte da especificação SVG2.0 e não funciona no Chromium. Apesar de ainda ser detectável, os desenvolvedores podem confundir as coisas. Ele será removido.
Intenção de remover | Rastreador de status do Chrome | Bug do Chromium