O Chrome 83 está começando a ser lançado para a versão estável.
Veja o que é necessário saber:
- Os tipos confiáveis ajudam a evitar vulnerabilidades de script entre sites.
- Os elementos de formulário recebem uma reformulação importante.
- Há uma nova maneira de detectar vazamentos de memória.
- A API do sistema de arquivos nativo inicia um novo teste de origem com mais funcionalidades.
- Há novas políticas de origem cruzada
- Lançamos o programa Web Vitals para oferecer orientações unificadas sobre indicadores de qualidade que acreditamos serem essenciais para oferecer uma ótima experiência do usuário na Web.
- E muito mais.
Meu nome é Pete LePage, trabalho e filmo de casa. Vamos conferir as novidades para desenvolvedores no Chrome 83.
Tipos confiáveis
A execução de scripts entre sites com base em DOM é uma das vulnerabilidades de segurança mais comuns na Web. É fácil introduzir um acidentalmente na sua página. Os tipos confiáveis podem ajudar a evitar esses tipos de vulnerabilidades, porque exigem que você processe os dados antes de transmiti-los para uma função potencialmente perigosa.
Considere innerHTML
, por exemplo, com tipos confiáveis ativados. Se eu tentar transmitir
uma string, ela falhará com um TypeError porque o navegador não sabe se
pode confiar na string.
// Trusted types turned on
const elem = document.getElementById('myDiv');
elem.innerHTML = `Hello, world!`;
// Will throw a TypeError
Em vez disso, preciso usar uma função segura, como textContent
, transmitir
um tipo confiável ou criar o elemento e usar appendChild()
.
// Use a safe function
elem.textContent = ''; // OK
// Pass in a trusted type
import DOMPurify from 'dompurify';
const str = `Hello, world!`;
elem.innerHTML = DOMPurify.sanitize(str, {RETURN_TRUSTED_TYPE: true});
// Create an element
const img = document.createElement('img');
img.src = 'xyz.jpg';
elem.appendChild(img);
Antes de ativar os tipos confiáveis, identifique e corrija todas as
violações usando um cabeçalho CSP report-only
.
Content-Security-Policy-Report-Only: require-trusted-types-for 'script'; report-uri //example.com
Depois que tudo estiver pronto, você poderá ativar corretamente. Confira todos os detalhes em Prevenir vulnerabilidades de scripting em vários sites com base no DOM com os Tipos confiáveis no web.dev.
Atualizações nos controles de formulário
Usamos controles de formulários HTML todos os dias, e eles são essenciais para grande parte da interatividade da Web. Eles são fáceis de usar, têm acessibilidade integrada e são conhecidos pelos nossos usuários. O estilo dos controles de formulário pode ser inconsistente em diferentes navegadores e sistemas operacionais. Muitas vezes, precisamos implementar várias regras de CSS apenas para ter uma aparência consistente em todos os dispositivos.
O trabalho que a Microsoft tem feito para modernizar a aparência dos controles de formulários me impressiona. Além do estilo visual mais agradável, elas oferecem melhor suporte ao toque e acessibilidade, incluindo suporte melhorado ao teclado.
Os novos controles de formulário já foram lançados no Microsoft Edge e agora estão disponíveis no Chrome 83. Para mais informações, consulte Atualizações nos controles de formulário e no foco no blog do Chromium.
Testes de origem
Medir a memória com measureMemory()
A partir do Chrome 83, o performance.measureMemory()
é uma
nova API que permite medir o uso de memória da sua página e
detectar vazamentos de memória.
Vazamentos de memória são fáceis de introduzir:
- Esquecer de cancelar o registro de um listener de eventos
- Como capturar objetos de um iframe
- Não fechar um worker
- Acumular objetos em matrizes
- e assim por diante.
Vazamentos de memória fazem com que as páginas pareçam lentas e poluídas para os usuários.
if (performance.measureMemory) {
try {
const result = await performance.measureMemory();
console.log(result);
} catch (err) {
console.error(err);
}
}
Confira Monitorar o uso total da memória da sua página da Web com measureMemory()
em web.dev para saber todos os detalhes da nova API.
Atualizações na API Native File System
A API Native File System iniciou um novo teste de origem no Chrome 83 com suporte a streams graváveis e a capacidade de salvar identificadores de arquivos.
async function writeURLToFile(fileHandle, url) {
// Create a FileSystemWritableFileStream to write to.
const writable = await fileHandle.createWritable();
// Make an HTTP request for the contents.
const response = await fetch(url);
// Stream the response into the file.
await response.body.pipeTo(writable);
// pipeTo() closes the destination pipe automatically.
}
Os streams graváveis facilitam muito a gravação em um arquivo. Como é um stream, é possível direcionar facilmente as respostas de um stream para outro.
Salvar identificadores de arquivos no IndexedDB permite armazenar o estado ou lembrar em quais arquivos um usuário estava trabalhando. Por exemplo, mantenha uma lista de arquivos editados recentemente, abra o último arquivo em que o usuário estava trabalhando e assim por diante.
Você vai precisar de um novo token de teste de origem para usar esses recursos. Confira meu artigo atualizado A API Native File System: simplificando o acesso a arquivos locais no web.dev com todos os detalhes e como conseguir seu novo token de teste de origem.
Outros testes de origem
Confira uma lista completa de recursos no teste de origem.
Novas políticas entre origens
Algumas APIs da Web aumentam o risco de ataques de canal lateral, como Spectre.
Para reduzir esse risco, os navegadores oferecem um ambiente isolado baseado em ativação
chamado de origem cruzada isolada. O estado isolado de origem cruzada também impede
modificações de document.domain
. A capacidade de alterar document.domain
permite a comunicação entre documentos do mesmo site e foi considerada
uma brecha na política de mesma origem.
Confira a postagem de Eiji Como isolar seu site em várias origens usando COOP e COEP para mais detalhes.
Web Vitals
Avaliar a qualidade da experiência do usuário tem muitas facetas. Embora alguns aspectos da experiência do usuário sejam específicos do site e do contexto, há um conjunto comum de indicadores ("Core Web Vitals") que é fundamental para todas as experiências da Web. Essas necessidades de experiência do usuário incluem a experiência de carregamento, a interatividade e a estabilidade visual do conteúdo da página. Combinadas, elas são a base das Core Web Vitals de 2020.
- A Maior exibição de conteúdo mede a velocidade de carregamento percebida e marca o ponto na linha do tempo de carregamento da página em que o conteúdo principal provavelmente foi carregado.
- First Input Delay mede a capacidade de resposta e quantifica a experiência dos usuários ao tentar interagir pela primeira vez com a página.
- A Cumulative Layout Shift mede a estabilidade visual e quantifica a quantidade de mudança inesperada de layout do conteúdo da página visível.
Todas essas métricas capturam resultados importantes centrados no usuário, são mensuráveis no campo e têm ferramentas e equivalentes de métricas de diagnóstico de laboratório. Por exemplo, embora a Maior exibição de conteúdo seja a métrica de carregamento de linha superior, ela também depende muito da First Contentful Paint (FCP, na sigla em inglês) e do Tempo para o primeiro byte (TTFB), que permanecem essenciais para monitorar e melhorar.
Para saber mais, confira Introdução às métricas da Web: indicadores essenciais para um site saudável no blog do Chromium.
E mais
- O Chrome agora oferece suporte à API de detecção de código de barras, que permite detectar e decodificar códigos de barras.
- A nova função
@supports
do CSS oferece detecção de recursos para seletores de CSS. - As novas anotações ARIA
oferecem suporte à acessibilidade para leitores de tela para comentários, sugestões e destaques
de texto com significados semânticos (semelhantes a
<mark>
). - A consulta de mídia
prefers-color-scheme
permite que os autores ofereçam suporte ao próprio tema escuro para que tenham controle total sobre as experiências que criam. - O JavaScript agora oferece suporte a módulos em workers compartilhados.
Quer saber o que vem por aí? Confira o Rastreador de APIs do Fuug para saber mais.
Leitura adicional
Isso abrange apenas alguns dos principais destaques. Confira os links abaixo para ver outras mudanças no Chrome 83.
- Novidades no Chrome DevTools (83)
- Suspensiones e remoções do Chrome 83
- Atualizações do ChromeStatus.com para o Chrome 83
- Novidades do JavaScript no Chrome 83
- Lista de mudanças no repositório de origem do Chromium
Inscrever-se
Se quiser ficar por dentro dos nossos vídeos, inscreva-se no canal do YouTube para desenvolvedores do Chrome e receba uma notificação por e-mail sempre que lançarmos um novo vídeo.
Meu nome é Pete LePage, e eu preciso de um corte de cabelo, mas assim que o Chrome 84 for lançado, vou estar aqui para contar a você as novidades do Chrome.