Resumo

  • Um rascunho HTML 5.1 do W3C, de maio de 2013, descreveu dialog, showModal(), uma pilha de diálogos, a camada superior e o bloqueio do documento. O capítulo de interação tornava inativos os elementos fora do diálogo modal.
  • A Candidata a Recomendação HTML5 de 2014 e a Recomendação HTML 5.2 de 2017 mantiveram esse arranjo. O padrão HTML atual detalha o foco e as solicitações de fechamento.

Uma confirmação de compra parece um problema de design: desenhar a caixa, escurecer o resto, escolher a cor do botão decisivo. Até a primeira pessoa navegar pelo teclado e descobrir que o formulário atrás da cortina continua recebendo visitas. A página pede uma resposta exclusiva, mas aceita conversas paralelas. O resultado é aquele restaurante que anuncia “sala reservada” com a porta aberta para a cozinha inteira.

No rascunho HTML 5.1 de 28 de maio de 2013, dialog designava uma parte da aplicação dedicada a uma tarefa. show() abria uma conversa comum. showModal() colocava o diálogo numa pilha controlada pelo documento, elevava-o à camada superior e bloqueava a página. A decisão interessante está no verbo bloquear. O navegador ganhou uma tarefa de circulação, além da tarefa de desenhar uma janela.

O capítulo de interação publicado no mesmo dia dizia o que o bloqueio fazia: os nós externos à conversa modal ficavam inativos. A sombra podia finalmente corresponder à realidade. O autor do site ainda escolhia a pergunta e a resposta possível; o navegador guardava a fronteira entre a tarefa da vez e todo o resto. Quem já tentou consertar uma sequência de Tab que escapa para o rodapé conhece o valor dessa divisão.

O porteiro precisava receber e dispensar as visitas. O texto de 2013 previa um alvo autofocus, a possibilidade de cancelar o diálogo no topo da pilha e um valor que close() podia devolver por returnValue. Quando a pessoa escolhe “não apagar”, cabe à aplicação respeitar a resposta; ao navegador cabe conduzir a saída. O botão de cancelar não pode virar uma loteria diferente em cada página.

A Candidata a Recomendação HTML5 de fevereiro de 2014 conservou pilha, camada superior e regras de cancelamento. A Recomendação HTML 5.2 de dezembro de 2017 descreveu os passos de foco do diálogo. As datas mostram a trajetória de documentos normativos. O que atravessa os anos é o problema: quando uma janela toma a palavra, o restante da página precisa saber que chegou sua vez de esperar.

Há um detalhe que desmonta muita confusão: show() e showModal() não pedem a mesma coisa. Um painel de inspeção pode ficar aberto enquanto se lê. Uma confirmação de exclusão interrompe a tarefa até receber uma escolha. Ambos cabem num retângulo de cantos arredondados. Só um deles chama o porteiro para segurar a fila. Decidir qual usar é uma escolha da página, e o leitor paga pelo excesso de zelo.

O HTML Standard em vigor refina foco inicial, formas de encerrar a conversa e valor de retorno; também inclui requestClose() e closedby, acréscimos posteriores ao rascunho de 2013. O vocabulário cresceu, mas a pergunta original continua boa: quem organiza a interrupção e quem decide o que ela significa? O navegador administra a porta. O site responde pela razão de ter chamado alguém até ela.

Uma boa caixa some assim que termina o assunto. A notícia volta a ocupar a tela. Se o porteiro precisar trabalhar a cada trinta segundos, o problema já não está na portaria.