Publicado em 7 de fevereiro de 2025
Em abril de 2024, uma postagem neste site anunciou que a API Popover estava disponível como baseline. No entanto, erramos, e o pop-up vai entrar na versão padrão a partir de 27 de janeiro de 2025. Esta postagem explica por que erramos e o que mudou desde então para reduzir a probabilidade de erros como esse.
O que é a API Popover?
A API Popover oferece uma maneira integrada de criar vários tipos de pop-up usados em aplicativos da Web. Antes, era necessário usar JavaScript e ter muito cuidado para implementá-los de forma acessível. A API traz tudo isso para o navegador, e um pop-up simples pode ser criado de forma declarativa em HTML.
<button popovertarget="my-popover">Open Popover</button>
<div id="my-popover" popover>
<p>I am a popover with more information. Hit <kbd>esc</kbd> or click away to close me.</p>
</div>
Por que não foi o valor de referência em abril de 2024?
Quando o Firefox lançou a implementação do pop-up em abril de 2024, ainda não havia sido descoberto que havia um problema significativo no iOS e no iPadOS. Nesses navegadores para dispositivos móveis, clicar fora do pop-up não o fechava, um recurso conhecido como exclusão leve. Esse é um problema que impediria a maioria dos desenvolvedores de usar o pop-up. Isso significa que ele não deveria ter sido incluído como base em abril, e foi necessário esperar até que o bug fosse corrigido no Safari 18.3.
Por que erramos?
A referência depende do trabalho de web-features para calcular quando os recursos estão dentro ou fora da referência. Se você analisar um arquivo de recurso individual nesse projeto, como o arquivo do popover, os recursos individuais dos dados de compatibilidade do navegador Mozilla vão aparecer. Um recurso da Web geralmente contém várias dessas inclusões. Isso ocorre porque um recurso na Web não é apenas uma propriedade ou um método, ele precisa de várias partes de componentes para funcionar. Nem um recurso é uma especificação completa. As especificações do CSS, por exemplo, geralmente incluem subrecursos que nunca foram implementados ou são usados apenas em um contexto específico. O trabalho de recursos da Web usa uma combinação de dados de disponibilidade existentes e entrada humana para determinar o que constitui um recurso da plataforma da Web e, principalmente, se uma implementação parcial é séria o suficiente para mantê-la fora da linha de base.
Em fevereiro, o trabalho com os recursos da Web estava longe de ser concluído. Portanto, para mostrar como a referência básica funcionaria, tentamos descobrir os principais recursos que fariam parte da referência básica de 2024 sem todos os dados necessários. No papel, ou melhor, nos dados de compatibilidade do navegador que não foram atualizados até setembro, quando o problema foi detectado, o popover parecia estar incluído. No entanto, devido ao bug no iOS ser grave o suficiente para impedir o uso do pop-up, ele não estava pronto.
Também havia falta de infraestrutura de teste para dispositivos móveis. O projeto Web Platform Tests nos dá uma maneira de testar se os recursos da plataforma da Web estão funcionando em todos os navegadores. Se esse problema de dispensa leve tivesse acontecido em um navegador para computador, teríamos visto que os testes estavam falhando, mas não foi o caso para dispositivos móveis.
Como podemos evitar isso no futuro?
Já estamos em uma posição muito melhor com os dados. Os dados de elementos da Web estão quase completos, e podemos ter um grau maior de confiança com qualquer um dos recursos que estamos declarando como de referência.
No caso específico desse problema, parte dele foi identificar um problema que só acontece em dispositivos móveis, no iOS. Algumas coisas estão acontecendo que vão facilitar a identificação de problemas de interoperabilidade em dispositivos móveis no futuro. Estamos trabalhando para melhorar os testes para dispositivos móveis nos testes da Plataforma Web. Assim, poderemos identificar melhor quando um navegador para dispositivos móveis tem problemas, separadamente do computador. Também planejamos mostrar esses dados no painel webstatus.dev neste ano. Se um problema como esse acontecer no futuro, vamos receber indicações mais rápidas de que isso aconteceu, preferencialmente antes de incluir o recurso na referência.
Sempre soubemos que mapear toda a plataforma da Web como um conjunto de recursos não seria fácil. No entanto, as discussões que estamos tendo sobre implementações parciais, bugs e o que realmente compõe um recurso são incrivelmente valiosas. Isso nos ajuda a identificar o que realmente importa para você, fornecendo indicadores melhores para usar ao planejar esforços como a Interop 2025.