Publicado em: 5 de março de 2025
Salvo indicação em contrário, as mudanças a seguir se aplicam à versão mais recente do canal beta do Chrome para Android, ChromeOS, Linux, macOS e Windows. Saiba mais sobre os recursos listados aqui nos links fornecidos ou na lista em ChromeStatus.com. O Chrome 135 está na versão Beta desde 5 de março de 2025. Baixe a versão mais recente em Google.com para computador ou na Google Play Store para Android.
CSS e interface
Nesta versão, adicionamos 13 novos recursos de CSS e UI.
Posicionamento da âncora: deslocamento de rolagem lembrado
Adição de suporte ao conceito de deslocamento de rolagem lembrado. Quando um elemento posicionado tem uma âncora padrão e está fixado a essa âncora em uma borda e contra o bloco de contêiner original na outra borda, o deslocamento de rolagem é considerado ao dimensionar o elemento. Isso significa que você pode usar todo o espaço visível (usando position-area) para o elemento fixo quando o documento é rolado em um determinado deslocamento de rolagem. Para evitar o layout (redimensionamento do elemento) sempre que o documento é rolado, o navegador usa o deslocamento de rolagem lembrado, em vez de usar sempre o deslocamento de rolagem atual. O deslocamento de rolagem lembrado é atualizado em um ponto de recálculo da âncora, que é a posição em que o elemento posicionado é exibido inicialmente ou quando uma opção de posição diferente (position-try-fallbacks) é escolhida.
Inércia do CSS
Tornar um elemento inerte afeta se ele pode ser focado, editado, selecionado e pesquisado com o recurso "Localizar na página". Isso também afeta a visibilidade na árvore de acessibilidade. A propriedade interactivity especifica se um elemento e os descendentes da árvore plana dele (incluindo execuções de texto) estão inertes ou não. A propriedade
interactivity aceita um destes dois valores: auto ou inert.
Propriedades de estouro lógico
As propriedades CSS overflow-inline e overflow-block permitem definir o estouro na direção inline e de bloco em relação ao modo de gravação. Em um modo de escrita horizontal, overflow-inline é mapeado para overflow-x, enquanto em um modo de escrita vertical, ele é mapeado para overflow-y.
Funções relacionadas a sinal: abs() e sign()
A propriedade dynamic-range-limit
Permite que uma página limite o brilho máximo do conteúdo HDR.
A função shape()
A função shape() permite formas responsivas de formato livre na propriedade clip-path. Ele permite definir uma série de comandos, equivalente aos comandos em
path(). No entanto, os comandos aceitam unidades responsivas (por exemplo, % ou vw), bem como qualquer valor CSS, como propriedades personalizadas.
O pseudoelemento ::column
Um pseudoelemento ::column, que permite aplicar um conjunto limitado de estilos aos fragmentos gerados. Especificamente, isso se limita a estilos que não
afetam o layout e, portanto, podem ser aplicados após o layout.
Pseudoelementos ::scroll-button()
Permite a criação de botões de rolagem interativos como pseudoelementos. Por exemplo:
.scroller {
overflow: auto;
}
.scroller::scroll-button(inline-start) {
content: "<";
}
.scroller::scroll-button(inline-end) {
content: ">";
}
Eles precisam ser focalizáveis e se comportar como um botão (incluindo os estilos de UA).
Quando ativada, uma rolagem precisa ser realizada na direção por alguma quantidade.
Quando não for possível rolar nessa direção, eles precisam ser desativados (e estilizados com :disabled). Caso contrário, eles serão ativados (e estilizados com :enabled). O seletor permite definir botões em quatro direções lógicas: block-start, block-end, inline-start, inline-end, além de quatro direções físicas: up, down, left, right.
::scroll-marker e ::scroll-marker-group
Adiciona ::scroll-marker e ::scroll-marker-group para contêineres de rolagem.
Com esses pseudoelementos, é possível criar um conjunto de marcadores focalizáveis para todos os
itens associados no contêiner de rolagem.
Estilização de pseudoelementos aninhados
Permite estilizar pseudoelementos aninhados em outros pseudoelementos.
Até agora, o suporte foi definido para: ::before::marker e ::after::marker, com ::column::scroll-marker sendo compatível no futuro.
Particionamento do histórico de links :visited
Para eliminar vazamentos do histórico de navegação do usuário, os elementos âncora são estilizados como
:visited somente se já tiverem sido clicados nessa origem de frame e site de nível superior. Ao estilizar apenas os links que foram clicados neste site e
frame antes, os muitos ataques de canal lateral que foram desenvolvidos para obter
informações de estilo de links :visited agora estão obsoletos, já que não fornecem mais
aos sites novas informações sobre os usuários.
Há uma exceção para links diretos, em que os links para as páginas de um site podem ter o estilo
:visited, mesmo que não tenham sido clicados nessa origem exata
do site e do frame de nível superior. Essa isenção só é ativada em frames de nível superior ou subframes com a mesma origem do frame de nível superior. Os benefícios de privacidade são preservados porque os sites já sabem quais subpáginas um usuário visitou. Nenhuma informação nova é exposta. Essa foi uma exceção solicitada pela comunidade que melhora a experiência do usuário.
Notação funcional de progresso de interpolação: função CSS *progress()
Variáveis safe-area-max-inset-*
Além das variáveis de ambiente safe-area-inset, o Chrome agora também é compatível com variantes max-area-safe-inset-* dessas variáveis. Ao contrário dos encartes dinâmicos, os encartes máximos não mudam e representam o encarte máximo possível da área segura.
Esses valores são necessários ao criar experiências da Web de ponta a ponta eficientes.
APIs Web
Adicionar suporte a MediaStreamTrack à API Web Speech
Adiciona suporte a MediaStreamTrack à API Web Speech. A API Web Speech é uma
API padrão da Web que permite aos desenvolvedores incorporar reconhecimento de fala e
síntese nas páginas da Web. No momento, a API Web Speech usa o microfone padrão do usuário como entrada de áudio. O suporte a MediaStreamTrack permite que sites usem a API Web Speech para legendar outras fontes de áudio, incluindo faixas de áudio remotas.
Particionamento de URL de blobs: busca e navegação
Como continuação do particionamento de armazenamento, esse recurso implementa o particionamento do acesso ao URL do blob por chave de armazenamento (site de nível superior, origem do frame e o booleano has-cross-site-ancestor), com exceção das navegações de nível superior que vão permanecer particionadas apenas pela origem do frame.
CSP require-sri-for para scripts
A diretiva require-sri-for permite afirmar que todos os recursos de um determinado tipo precisam ser verificados quanto à integridade. Se um recurso desse tipo for carregado sem metadados de integridade, a tentativa vai falhar e acionar um relatório de violação da CSP. Essa intent abrange o valor "script"
dessa diretiva.
Criar um cliente de service worker e herdar o controlador do service worker para o iframe srcdoc
No momento, os documentos de contexto do Srcdoc não são clientes de service worker e não são cobertos pelo service worker da página mãe. Isso resulta em algumas discrepâncias. Por exemplo, o Resource Timing informa os URLs que esses documentos carregam, mas o service worker não os intercepta. Isso visa corrigir as discrepâncias criando clientes de service worker para iframes srcdoc e fazendo com que eles herdem o controlador de service worker do elemento pai.
Disparar eventos de clique para o ponteiro capturado
Se um ponteiro for capturado enquanto o evento pointerup estiver sendo enviado, o evento click será enviado ao destino capturado em vez do ancestral comum mais próximo dos eventos pointerdown e pointerup, conforme a especificação de eventos da interface. Para ponteiros não capturados, o destino click permanece inalterado.
Float16Array
Adiciona a matriz tipada Float16Array. Os valores numéricos são arredondados para IEEE fp16 ao gravar em instâncias Float16Array.
Incorporar o iniciador de navegação à chave de partição do cache HTTP
O esquema de chaves de cache HTTP do Chrome foi atualizado para incluir um booleano
is-cross-site-main-frame-navigation e mitigar ataques de vazamento entre sites
envolvendo navegação de nível superior. Especificamente, isso vai impedir
ataques entre sites em que um invasor pode iniciar uma navegação de nível superior para uma
página específica e depois navegar até um recurso conhecido por ser carregado pela página para
inferir informações sensíveis por tempo de carregamento. Essa mudança também melhora a privacidade, impedindo que um site malicioso use navegações para inferir se um usuário já visitou um determinado site.
Prevenção de rastreamento de HSTS
Reduz o rastreamento de usuários por terceiros usando o cache do HSTS.
Esse recurso só permite upgrades HSTS para navegações de nível superior e bloqueia upgrades HSTS para solicitações de subrecursos. Isso torna inviável que sites de terceiros usem o cache HSTS para rastrear usuários na Web.
Comandos do invocador: atributos command e commandfor
Os atributos command e commandfor em elementos <button> permitem atribuir
comportamento aos botões de uma maneira mais acessível e declarativa, reduzindo
bugs e simplificando a quantidade de JavaScript necessária para a interatividade. Os botões
com atributos commandfor e command, quando clicados, tocados ou
acionados com pressionamento de tecla, enviam um CommandEvent no elemento referenciado por
commandfor, com alguns comportamentos padrão, como abrir caixas de diálogo e popovers.
Vincular rel="facilitated-payment" para oferecer suporte a pagamentos por push
Adiciona suporte para <link rel="facilitated-payment" href="..."> como uma dica de que
o navegador deve notificar os clientes de pagamento registrados sobre um pagamento
por push pendente.
A propriedade NavigateEvent sourceElement
Quando uma navegação é iniciada por um elemento (ou seja, um clique em um link ou o envio de um formulário), a propriedade sourceElement no NavigateEvent retorna o elemento iniciador.
Mudança no nome do motivo da API NotRestoredReasons
A API NotRestoredReasons está mudando alguns dos textos de motivo para se alinhar aos nomes padronizados. Os desenvolvedores que monitoram esses motivos podem notar uma mudança
nos textos de motivo.
API Web Speech no dispositivo
Ignorar mudanças no URL do cliente do service worker history.pushState
Modifica a propriedade Client.url do service worker para ignorar mudanças no URL do documento
usando history.pushState() e outras APIs de histórico semelhantes. A propriedade Client.url
é destinada a ser o URL de criação do documento HTML, que ignora
essas mudanças.
Compatibilidade com atributos rel e relList para SVGAElement
A interface SVGAElement no SVG 2.0 permite a manipulação de elementos <a>
semelhante aos elementos de âncora HTML. O suporte aos atributos rel e relList
melhora a segurança e a privacidade dos desenvolvedores. Esse alinhamento com elementos de âncora HTML garante consistência e facilidade de uso em todas as tecnologias da Web.
Marcações de tempo para frames codificados de RTC
Esse recurso consiste em expor à Web alguns carimbos de data/hora presentes em frames codificados do WebRTC transmitidos via RTCPeerConnection. Os carimbos de data/hora em questão são:
- Carimbo de data/hora de captura: o carimbo de data/hora em que um frame foi capturado originalmente
- Carimbo de data/hora de recebimento: o carimbo de data/hora de quando um frame foi recebido
Atualizar ProgressEvent para usar o tipo duplo para "loaded" e "total"
O ProgressEvent tem atributos loaded e total que indicam o andamento,
e agora o tipo deles é unsigned long long. Com esse recurso, o tipo desses dois atributos mudou para double, o que dá ao desenvolvedor mais controle sobre o valor. Por exemplo, agora os desenvolvedores podem criar um
ProgressEvent com o total de 1 e o loaded aumentando de 0 para 1
gradualmente. Isso será alinhado com o comportamento padrão do elemento HTML <progress> se o atributo max for omitido.
A API fetchLater
A API fetchLater() é uma API JavaScript para solicitar uma busca adiada,
especialmente útil para beaconing mais confiável no final do ciclo de vida de uma página.
Quando chamado em um documento, um pedido adiado é enfileirado pelo navegador no estado
PENDING e será invocado pela primeira das seguintes condições:
O documento é destruído. Após um período especificado pelo usuário. Por motivos de privacidade, todas as solicitações pendentes serão liberadas quando o documento entrar no bfcache, não importa quanto tempo falte. O navegador decide quando é hora de enviar.
A API retorna um FetchLaterResult que contém um campo booleano activated
que pode ser atualizado para informar se a solicitação adiada foi enviada ou
não. Se o envio for bem-sucedido, toda a resposta será ignorada pelo navegador,
incluindo corpo e cabeçalhos.
Do ponto de vista do usuário da API, o horário exato de envio é desconhecido.
Novos testes de origem
No Chrome 135, você pode ativar os seguintes novos testes de origem.
Invocadores de interesse
Esse recurso adiciona um atributo interesttarget aos elementos <button> e <a>. O atributo interesttarget adiciona comportamentos de "interesse" ao
elemento. Assim, quando o usuário "mostra interesse" no elemento, as ações são
acionadas no elemento de destino. As ações podem incluir mostrar um
popover. O user agent vai detectar quando o usuário "demonstra interesse" no
elemento, usando métodos como passar o cursor do mouse sobre ele, pressionar
teclas de atalho especiais no teclado ou tocar e manter pressionado o elemento em telas sensíveis ao toque.
Quando o interesse é mostrado ou perdido, um InterestEvent é disparado no destino, que tem ações padrão no caso de popovers: mostrar e ocultar o popover.
Integridade com base em assinaturas
Esse recurso oferece aos desenvolvedores da Web um mecanismo para verificar a origem dos recursos de que dependem, criando uma base técnica para a confiança nas dependências de um site. Em resumo: os servidores podem assinar respostas com um par de chaves Ed25519, e os desenvolvedores da Web podem exigir que o user agent verifique a assinatura usando uma chave pública específica. Isso oferece uma adição útil às verificações baseadas em URL oferecidas pela Política de Segurança de Conteúdo, por um lado, e às verificações baseadas em conteúdo da Integridade de Subrecursos, por outro.
Descontinuações e remoções
Esta versão do Chrome apresenta as suspensões de uso e remoções listadas abaixo. Acesse ChromeStatus.com para conferir listas de descontinuações planejadas, atuais e remoções anteriores.
Esta versão do Chrome descontinua um recurso.
Descontinuação de getters de informações de localidade internacional
A API Intl Locale Info é uma proposta TC39 do ECMAScript de fase 3 para aprimorar o objeto
Intl.Locale expondo informações de localidade, como dados de semana (primeiro
dia da semana, dia de início do fim de semana, dia de término do fim de semana, dia mínimo da primeira
semana) e ciclo de direção de texto por hora usado na localidade. O Chrome lançou uma implementação no Chrome 99, mas a proposta mudou para mover vários getters para funções. Precisamos remover os getters descontinuados e reiniciar as
funções renomeadas.
Esta versão do Chrome remove três recursos.
Remoção do método navigator.xr.supportsSession descontinuado
navigator.xr.supportsSession foi substituído na especificação do WebXR pelo
método navigator.xr.isSessionSupported em setembro de 2019, após receber
feedback sobre a forma da API da TAG. Desde então, ele foi marcado como descontinuado no
Chrome, produzindo um aviso no console que redireciona os desenvolvedores para a
API atualizada. O uso da chamada é muito baixo, e todos os principais frameworks usados para criar conteúdo do WebXR foram atualizados para usar a chamada mais recente.
Remover a propriedade NavigateEvent canTransition
No Chrome 108, o método transitionWhile() e a propriedade canTransition do NavigateEvent foram substituídos pelo novo método intercept() e pela propriedade canIntercept. Nesse momento, o método transitionWhile() foi
removido. No entanto, esquecemos de remover a propriedade canTransition. Em vez disso, a
deixamos como um alias para canIntercept. No Chrome 135, vamos corrigir isso
e remover canTransition. Qualquer uso de canTransition pode ser substituído por canIntercept sem mudar o comportamento.
Remover o limite da WebGPU maxInterStageShaderComponents
O limite de maxInterStageShaderComponents está sendo removido devido a uma combinação de fatores:
- Redundância com
maxInterStageShaderVariables: esse limite já tem uma finalidade semelhante, controlando a quantidade de dados transmitidos entre as etapas do shader. - Pequenas discrepâncias: embora haja pequenas diferenças na forma como os dois limites são calculados, elas são mínimas e podem ser gerenciadas de forma eficaz no
maxInterStageShaderVariables limit. - Simplificação: a remoção de
maxInterStageShaderComponentssimplifica a interface do shader e reduz a complexidade para os desenvolvedores. Em vez de gerenciar dois limites separados (que se aplicam simultaneamente, mas com diferenças sutis), eles podem se concentrar nomaxInterStageShaderVariables, que tem um nome mais adequado e é mais abrangente.