Compartilhar via


Suporte à acessibilidade no ASP.NET

O ASP.NET pode ajudá-lo a criar aplicativos da Web que podem ser acessados por pessoas com deficiências físicas.Aplicativos da Web acessíveis permitem que as pessoas usem tecnologias assistenciais, como leitores de tela, para trabalhar com páginas da Web.Aplicativos da Web acessíveis têm as seguintes vantagens:

  • Eles são utilizáveis por um público mais amplo possível.

  • Eles envolvem princípios de design que frequentemente beneficiam a todos os usuários, não apenas aqueles com deficiências.

  • Eles atendem aos requisitos de muitas instituições que exigem que todos os aplicativos da Web sejam acessíveis.

Com o entendimento das diretrizes de acessibilidade e como o ASP.NET pode ajudar a atender as diretrizes, você pode criar aplicativos que tornam mais fácil a interação para pessoas com deficiências.

Diretrizes de Acessibilidade

Várias organizações publicam diretrizes com informações sobre como criar aplicativos acessíveis.As seguintes são diretrizes conhecidas:

  • Web Content Accessibility Guidelines 1.0 (WCAG).

    Esses padrões são desenvolvidos pelo World Wide Web Consortium (W3C) e são a base de muitos outros padrões de acessibilidade.Este inclui padrões de acessibilidade que são usados por governos em todo o mundo.

    Para as diretrizes de acessibilidade de conteúdo da Web, vá para o Site da World Wide Web Consortium (W3C).

    As diretrizes WCAG definem diferentes níveis de prioridades, usando uma escala de 1 a 3 para os pontos de verificação que estão associados a cada diretriz.Algumas instituições exigem que todos os sites da Web atendam aos pontos de prioridade 1 e prioridade 2.

  • Section 508.

    O governo Estados Unidos define padrões de acessibilidade na Seção 508 do Act Rehabilitation, que são semelhantes à WCAG.

    Para as diretrizes da seção 508, vá para http://www.section508.gov.

  • Diretrizes de Acessibilidade da Microsoft.

    Para as diretrizes de acessibilidade da Microsoft, vá para Acessibilidade da Microsoft e vá para o Biblioteca MSDN and Pesquisar for "Accessibility Design Guidelines para a Web".

Testando a acessibilidade

Até certo ponto, você pode testar o quanto páginas da Web estão de acordo com padrões de acessibilidade usando uma variedade de ferramentas de terceiros que estão disponíveis.

Se você tiver um ambiente de desenvolvimento, como o Microsoft Visual Studio 2005, o ambiente pode oferecer ferramentas de teste de acessibilidade.Para obter mais informações, procure na documentação do produto.No entanto, ferramentas de validação de acessibilidade em tempo de design não testam a saída que é gerada dinamicamente, como a marcação (markup) que é adicionada por controles de servidor ASP.NET ou pelo seu próprio código.Você deve testar a saída de suas páginas, além de usar as ferramentas de validação de acessibilidade em tempo de design.

Um teste de acessibilidade automatizado não pode executar um diagnóstico completo da acessibilidade de uma página ou site da Web.Muitas das diretrizes de acessibilidade requerem o seu julgamento para determinar se os recursos em uma página estão compatíveis com a diretriz.Por exemplo, um teste automatizado pode determinar se você forneceu texto alt para todas as imagens na sua página.Entretanto, o teste automatizado não pode determinar se o texto alt descreve a imagem.Da mesma forma, um teste automatizado não pode determinar objetivamente se as cores que você está usando na sua página apresentam contraste suficiente para leitores que requerem texto de alto contraste.Portanto, para criar aplicativos realmente acessíveis, você deve estar familiarizado com as especificações e a intenção das diretrizes para que você possa criar suas páginas e atender as diretrizes de acessibilidade.Um outro exemplo de uma verificação de acessibilidade que pode não ser executada por uma ferramenta, é que textos alt devem existir para uma imagem somente de gráfico, como uma borda de tabela arredondada.Caso contrário, um leitor de tela lerá o arquivo de imagem.Se o texto alt estiver vazio, o leitor de telas ignorará corretamente a imagem.

Recursos de acessibilidade no ASP.NET

Na maioria das vezes, os controles ASP.NET ou colocam marcação que resulte em páginas que atendam aos padrões de acessibilidade ou expõem as propriedades que você pode definir para tornar as páginas acessíveis.Entretanto, algumas vezes os controles ASP.NET colocam saída que não estão de acordo com todos os padrões de acessibilidade.Para informações detalhadas, consulte Controles ASP.NET e acessibilidade.

Recursos gerais de controles que suportam acessibilidade

Geralmente, os controles ASP.NET atendem aos requisitos de acessibilidade das seguintes maneiras:

  • Fornecem uma maneira de especificar um texto equivalente para qualquer elemento que não seja texto.

  • Não tem dependências cor.

  • Colocam legendas e cabeçalhos de coluna de tabela em tabelas.

  • Processam elementos fieldset e legend que tenham elementos div.

  • Não requerem folhas de estilos (style sheets).

  • Suportam posicionamento usando propriedades de estilo.

  • Associam rótulos a controles.

  • Geram scripts de cliente que sejam independentes de dispositivo; por exemplo, um script que não responde apenas a cliques de mouse.

Acesso pelo teclado

Um recurso de acessibilidade importante é que a funcionalidade na página deve estar disponível a formas alternativas de entrada de usuário.Em termos práticos, isso significa que qualquer tarefa que possa ser concluída com o mouse também pode ser concluída com o teclado.

O ASP.NET permite que você inclua suporte a teclado para as páginas das seguintes maneiras:

  • Você pode definir ordem de tabulação para controles usando a propriedade TabIndex.

  • Você pode especificar um botão padrão para um formulário ou controle Panel definindo a propriedade DefaultButton.

  • Você pode definir o foco em controles de entrada usando métodos, como o método SetFocus ou definindo a propriedade DefaultFocus de um formulário.

  • Você pode definir chaves de acesso para controles de botão, definindo a propriedade AccessKey.

  • Você pode usar controles Label com caixas de texto, que permitem que você defina chaves de acesso para as caixas de texto.Para informações detalhadas, consulte Como: Use rótulo servidor Web Controls sistema autônomo legendas.

Imagens e textos alternativos

As diretrizes de acessibilidade recomendam fornecer textos alternativos com significado para imagens na página que têm um propósito funcional, atuando como botões ou imagens que são processadas por controles de dados.Isso permite que leitores de tela relatem para que serve cada imagem na página.Se uma imagem não tem finalidade funcional além de decoração, o texto alternativo deve ser definido como uma string vazia para que leitores de tela ignorem a imagem.

Por padrão, porque os controles Image, ImageButton e ImageMap não podem gerar automaticamente texto significativo, esses controles não processam qualquer texto alternativo.Em vez disso, você deve fornecer o texto você mesmo.Verificadores de acessibilidade sinalizam controles de imagem sem texto alternativo como uma violação das diretrizes.

Para controles de imagem, você deve seguir um destes procedimentos para o controle:

  • Defina a propriedade AlternateText ao texto significativo.

  • Defina a propriedade GenerateEmptyAlternateText para true a fim de fazer com que um controle Image ASP.NET processe uma sequência de caracteres vazia como um texto alternativo.Texto alternativo vazio é interpretado pelos verificadores de acessibilidade que você marcou deliberadamente a imagem como sendo não importante.

Alguns controles, como o controle TreeView, o controle Menu e Web Parts, processam imagens ou links como parte de suas marcações.Nesses casos, o controle cria um texto alternativo que descreva a sua função para cada imagem ou link.

Por exemplo, o controle TreeView processa imagens para expandir e recolher botões para cada nó.O controle TreeView gera texto alternativo para essas imagens baseado no texto do nó.Por padrão, o texto alternativo para a imagem para expandir um nó com o texto Iniciar é colocado como Expandir Iniciar.Você pode especificar seu próprio texto alternativo, definindo as propriedades ExpandImageToolTip e CollapseImageToolTip para o controle TreeView.

Da mesma forma, o comando Menu coloca texto alternativo para os links que ele gera para expandir e recolher itens de menu.Os botões na barra de título de um controle Web Parts da mesma forma colocam texto alternativo que descrevem a função para cada botão.

Dispositivos de tecnologia assistencial, como leitores de tela, devem enumerar cada link que estiver em uma página na ordem em que as páginas aparecem.Às vezes, como em um menu de uma página principal que aparece na parte superior de cada página no site da Web, o leitor de telas será forçado a ler todas as entradas em cada página antes de chegar ao conteúdo principal da página.Em casos como esses, as diretrizes de acessibilidade recomendam fornecer uma maneira de os usuários ignorarem as listas de links repetitivos.Uma maneira de ignorar links repetitivos é implementar os seguintes controles:

Cada um desses controles suporta uma propriedade SkipLinkText.Se essa propriedade for definida como uma string (que pode incluir qualquer texto), o controle coloca uma âncora antes dos links que inclui uma imagem .gif invisível com texto alternativo.Por padrão, o texto alternativo é Skip Navigation Links, mas você pode configurar o texto.A âncora vincula outra âncora que segue o controle.Isso permite que leitores de tela e tecnologias semelhantes forneçam aos usuários a oportunidade de ignorar os links que são gerados pelo controle, sem interferir visualmente com a exibição da página.Se a propriedade SkipLinkText é definida como uma sequência de caracteres vazia, o controle não processa as marcas de âncora.

Controles que colocam tabelas

As diretrizes de acessibilidade recomendam que tabelas HTML incluam o seguinte:

  • Uma legenda para ajudar tecnologias assistenciais a identificar a finalidade da tabela.

  • Uma maneira de identificar os cabeçalhos de coluna.

Se você usar o controle Table para criar uma tabela, você pode definir explicitamente sua propriedade Caption.Você pode criar cabeçalhos de tabela usando a classe TableHeaderRow, definindo a propriedade TableSection como a enumeração TableHeader da classe TableRowSection.Isso faz com que a tabela processe um elemento thead.Quando você cria células com o controle TableCell, você pode definir cada propriedade AssociatedHeaderCellID da célula para a identificação de uma célula de cabeçalho da tabela.Isso faz com que a célula processe um atributo header que associa a célula ao título de coluna correspondente.

Os seguintes controles de servidor ASP.NET podem colocar tabelas de HTML:

Esses controles permitem que você defina as propriedades Caption e CaptionAlign para criar as legendas recomendadas para a tabela resultante.

Para esses controles, se você definir a propriedade UseAccessibleHeader, o controle processa elementos th que tenham atributos scope para identificar os cabeçalhos de coluna.

Dois controles adicionais, os controles DataList e Repeater, não processam automaticamente elementos thead ou th.Entretanto, você pode definir modelos de cabeçalho para esses controles.Para o controle DataList, modelos de cabeçalho processam elementos th.O controle Repeater não processa qualquer marcação automaticamente; você define os modelos de cabeçalho, corpo e rodapé para o controle, no qual você pode especificar qualquer marcação.Se você especificar que o controle Repeater deva processar uma tabela HTML, você deve incluir a marcação apropriada para atender aos padrões de acessibilidade.

Controles que colocam elementos div

As diretrizes de acessibilidade recomendam dividir formulários longos em seções para torná-los mais fácil de navegar.O HTML 4.0 introduziu os elementos fieldset e legend a fim de permitir que os desenvolvedores de páginas Web possam dividir um formulário em seções.

No ASP.NET, você pode usar o controle Panel para criar subdivisões em um formulário.Se você definir a propriedade GroupingText do controle para uma sequência de caracteres, o controle Panel processa um elemento div que contém um elemento fieldset para o conteúdo e um elemento legend que possui a sequência que você usou na propriedade GroupingText.

Alguns controles Web Parts processam elementos div também.Esses controles automaticamente processam elementos fieldset e legend.

Controles de validação

Muitas páginas da Web exibem um asterisco (*) próximo a uma caixa de texto quando uma entrada é necessária ou se o usuário tiver errado na entrada de dados.Como um asterisco não é significativo, você sempre deve especificar mensagens de erro significativo nas propriedades Text e ErrorMessage dos controles de validação.

Além disso, controles de validação devem desabilitar script de cliente (EnableClientScript=false).

Controles de login

Controles de logon, como os controles Login, ChangePassword, PasswordRecovery, e CreateUserWizard, incluem outros controles, como os controles Label, TextBox e controles de validação.Como você, desenvolvedor da página da Web, não necessariamente tem controle direto sobre o que os controles de login colocam, os controles são criados com acessibilidade em mente.Por exemplo, os controles apresentam o seguinte comportamento para oferecer suporte à acessibilidade:

  • Caixas de texto com rótulos associados.

  • Controles de entrada têm índices de navegação por tab.

No entanto, se você criar modelos para esses controles de login, você deve configurar os controles nos modelos de maneira que os controles sejam compatíveis com as diretrizes de acessibilidade.

Script de cliente e controles de servidor ASP.NET

Os padrões WCAG recomendam que as páginas não usem script de cliente para qualquer propósito funcional, somente para efeitos não essencias, como rollovers de mouse.As diretrizes Section 508 permitem o uso de script de cliente, se as tecnologias auxiliares puderem trabalhar com os valores que são retornados pelo script.

Vários controles de servidor da Web ASP.NET dependem de script de cliente.Por exemplo:

  • Os controles LinkButton e ImageButton exigem script de cliente para executar postagens.

  • O controle Calendar requer script de cliente para oferecer suporte a cliques em links de dia.

  • Os controles Web Parts dependem de script de cliente para fechar, minimizar, e editar links.

Para obter uma lista completa dos controles que usam script de cliente, consulte ASP.NET Web Server Controls that Use Client Script.

Portanto, se você usar algum dos controles que exigem script de cliente em uma página, sua página não estará de acordo com os padrões WCAG.Se o seu aplicativo da Web deve ser 100 % compatível com os padrões WCAG, você não pode usar controles que dependam do script de cliente na página.Entretanto, esses controles estão de acordo com os padrões section 508 para uso de script de cliente em uma página.

Consulte também

Conceitos

Controles ASP.NET e acessibilidade