Original Article: HTML5, ARIA Roles, and Screen Readers in May 2010
Author: Acessible Culture
HTML5, modelos ARIA, e Leitores de Tela em Maio de 2010
Existem alguns exemplos e trabalhos bons e úteis por aí já mostrando como leitores de tela lidam com diversas construções HTML5 e modelos ARIA. Sei que as especificações ainda não estão finalizadas e vendedores de tecnologia assistiva sempre estão trabalhando nisso, mas eu queria brincar um pouco e confirmar por conta própria como alguns dos principais leitores de tela para Windows, como JAWS 11, Window-Eyes 7.11, NVDA 2010.1, e SAToGO 3.0.202 atualmente lidam com a divisão de elementos básicos de HTML5, assim como ARIA landmark e outros modelos. Foi sugerido que até navegadores e leitores de tela suportem elementos de HTML5 e seus modelos ARIA implícitos, deveríamos estar explicitamente suplementando certos elementos HTML5 com seu modelo ARIA associado.
Atualização: Resultados por VoiceOver no MacOS X Snow Leopard com Safari 4.0.3 adicionados. - 7 de Maio de 2010
Os casos teste
O primeiro caso teste usa apenas os elementos HTML5, em particular:
header
nav
section
article
aside
footer
O segundo caso teste também aplica os seguintes modelos ARIA:
banner
navigation
main
article
complementary
contentinfo
Fiz o teste com os quatro leitores de tela usando Internet Explorer 8 e Firefox 3.6.
Nota: Dependendo da combinação de navegador e leitor de tela que você usar, links internos da página nos casos testes, particular aqueles com destinos que são simples cabeçalhos com um atributo id
podem ou não conseguir o foco correto e atualizar a posição na ordem TAB. Isso é um problema, bem documentado, com certos navegadores e leitores de tela, e não está relacionado ao uso de HTML5 e modelos ARIA. Este pode ser amenizado ao adicionar tabindex="-1"
e/ou usando elementos a
de outras maneiras, mas isso fica para outro conjuntos de casos testes.
Os resultados
Brevemente, NVDA funciona muito bem com HTML5 e HTML5 com modelos ARIA nos casos testes, seja no IE8 ou FF3.6. Navegando, lendo, e interagindo com markup HTML5 e referências ARIA é bem direto. Tanto que não há motivo para incluí-lo nos resultados testes: suficiente dizer que NVDA mata a pau.
JAWS funciona bem, ainda que no FF3.6 este não parece gostar do elemento nav
aninhado em um header
. Por ora, pelo menos, é razoável evitar aninhar elementos nav
em elementos header
. Atualização (Aug. 27, 2010): Veja o
comentário #3 de Terrill Thompson abaixo. Infelizmente, JAWS 11 no Firefox 3.6 não lida bem com elementos header em qualquer implementação.
SAToGO também funciona bem, e agora até permite navegação por referências ARIA, ainda que não anuncie o tipo de referência automaticamente quando a encontra. E só pude navegar pelas referências em uma direção no IE8, enquanto que no FF3.6, pude navegar entre próxima e anterior pressionando ; e Shift+; respectivamente. Atualização: Novos resultados para SAToGO versão 3.1.24, 21 de maio de 2010.
Window-Eyes 7.11, por outro lado, e isso é algo que já sabíamos, simplesmente não reconhece modelos ARIA. Ainda mais, Window-Eyes parece hesitar no IE8 quando HTML5 e modelos ARIA são usados em conjunto: no “Modo Navegação” ele não consegue encontrar nenhum link numa seção de elementos HTML5 que também tem um modelo ARIA. Se você desligar o “Modo Navegação”, ele encontra todos os links, mas isso significa que você teria que continuamente ligar e desligar o “Modo Navegação” para realmente ler e usar a página.
Alguns testes rápidos adicionais que eu fiz mostraram que no IE8, Window-Eyes não tem problemas encontrando links em uma div
simples que também tem um modelo ARIA, ou dentro de um elemento HTML5 seccionado sem modelo ARIA, mas combine os dois e Window-Eyes se perde. Isso é confirmado, por exemplo, pelo, Site de Bruce Lawson, que faz bom uso de HTML5 e ARIA. Se você visitar o site com Window-Eyes e IE8, nenhum dos links em header
na #sidebar nav
são encontrados já que ambos esses elementos HTML5 tem modelos ARIA implementados. Mas não há problema com os links na área de conteúdo central, ainda que tenha role="main"
já que este usa uma div
nromal. Se você usar um elemento section
, a maioria dos links na página iria desaparecer para Window-Eyes no IE8.
Ainda que eu não tenha os números para provar, suponho que a maioria dos usuários de Window-Eyes usam Internet Explorer ao invés de Firefox, então isso pode ser um motivo para evitar o uso de HTML5 e modelos ARIA juntos pelo momento, dependendo de como você se sente apelando para usuários de Window-Eyes com IE8. Será interessante observar como as coisas mudarão uma vez que IE9 e Window-Eyes 8 sejam lançados.
Os resultados mais detalhados dos testes estão abaixo. A não ser que indicado o contrário, o leitor de tela teve a performance esperada para uma experiência normal.
Atualização #1 (30 de Junho de 2010): Parece que mesmo aninhando um elemento com um atributo role
em um elemento de divisão HTML5 pai causa problemas para Window-Eyes. Por exemplo, links dentro de um ul
com role = "navigation"
aninhados dentro de um elemento nav
pai não serão encontrados por Window-Eyes.
Atualização # 2 (5 de julho de 2010): Por outro lado, e curiosamente, aninhar um elemento HTML5 dentro de uma div
com um role
ARIA não parece causar problemas em Window-Eyes. Por exemplo, os links num elemento nav
que está aninhado em uma div
com role = "navigation"
ainda são encontrados por Window-Eyes. Então essa é, por ora, a melhor maneira de usar elementos HTML5 e modelos de referência ARIA juntos sem causar impacto negativo em usuários de Window-Eyes.
Atualização # 3 (7 de julho de 2010): Com a última atualização para Window-Eyes 7.2, links dentro de elementos HTML5 que tem uma referência ARIA role
podem ser encontrados e utilizados. Infelizmente, aninhar pelo menos alguns elementos semânticos HTML 4 com um atributo role
em uma divisão de elementos pai HTML5 ainda causa problemas para Window-Eyes 7.2. Ou seja, links em uma ul
com role = "navigation"
aninhada dentro de um elemento nav
pai, por exemplo, ainda não são encontrados e acionáveis usando essa última versão de Window-Eyes.
Atualização # 4 (21 de julho de 2010): Acho que deixei as coisas um pouco confusas a esse ponto, então vamos recapitular: no Internet Explorer 8, versões de Window-Eyes 7.2 e inferiores, quando em modo de navegação normal, tem problema encontrando e usando links em conteúdo onde role
foram usados em conjunto com elementos de divisão HTML5 em certos arranjos. Usar links em um elemento HTML5 com um atributo role
ARIA é um problema com Window-Eyes 7.11 e inferior. Isso não é um problema com Window-Eyes 7.2, mas na versão 7.2 persiste um problema pelo menos com listas ordenados e desordenadas, e possivelmente com alguns outros elementos também, que tenham um role
ARIA aplicado. Tanto Window-Eyes 7.11 quanto 7.2 não conseguem usar links em um elemento ul
com role = "navigation"
, independente de estar aninhado em um elemento nav
. O mesmo vale, por exemplo, para links dentro de um elemento ol
com role = "contentinfo"
. (Esse bug do Window-Eyes também se manifesta um pouco no Firefox 3.6). Entretanto, aninhar um elemento HTML5 em uma div
genérica com um role
ARIA, ou vice-versa, aninhar uma dia com div
com ARIA role
ARIA dentro de um elemento HTML5, não parece causar problemas com Window-Eyes. Então, por exemplo, você poderia envolver o elemento nav
com <div role="navigation">
ou, alternativamente, envolver o conteúdo interno da nav
em uma div
com um role
ARIA. Exemplos desses diferentes arranjos podem ser encontrados neste página teste especial para Window-Eyes.
Caso teste somente com HTML5
JAWS 11
IE8
- nenhum problema ou complicação óbvia
FF3.6
- não gosta da
nav
entre o elementoheader
: ao carregar a página, JAWS pula para algum lugar abaixo daheader
e começa a ler, frequentemente ah1
ou a “Primeira Seção” interna da página; e os linksnav
dentro doheader
não aparecem na lista de links de JAWS - Pode pressionar TAB para chegar em cada link, mas, no modo VirtualPC Cursor, os links dentro do
header
, quando selecionados com o teclado, registram e agem como qualquer link fora doheader
que estava focado anteriormente (exemplo, com frequência o link interno da “Primeira Seção” da página dentro dasection
“principal”) - com o modo VirtualPC Cursor desligado, os links no
header
funcionam normalmente via teclado - Os links no
header
parecem funcionar normalmente quando selecionados com o mouse, estando VirtualPC Cursor ligado ou não - Links fora do
header
são todos reconhecidos e funcionam bem
Window-Eyes 7.11
IE8 e FF3.6
- nenhum problema ou complicação óbvia
SAToGo 3.0.202
IE8 e FF3.6
- nenhum problema ou complicação óbvia
VoiceOver
Safari 4.0.3
- nenhum problema ou complicação óbvia
Caso de teste HTML5 + Modelos ARIA
JAWS 11
IE8
- o mesmo que a versão somente HTML5, exceto que,
- todas as referências ARIA são encontradas e navegáveis
- também considera
role="article"
uma referência
FF3.6
- mesmos problemas com o
nav
eheader
que com o caso somente HTML5 - todas as referências ARIA são encontradas e navegáveis, exceto pela
navigation
entre referências ARIA aninhadas noheader
- Também considera
role = "article"
uma referência
Window-Eyes 7.11
IE8
- nenhuma referência ARIA encontradas
- nenhum link encontrado porque as três seções principais da página usam elementos HTML5 com modelos ARIA
- O
header
comrole = "banner"
, asection
com orole = "main" > Footer
comrole = "contentinfo"
são reconhecidos como controles (exemplo, eles podem ser acessados ao pressionarC) e estão na ordem TAB
FF3.6
- nenhuma referência ARIA encontrada
- todos os links encontrados, ao contrário de IE8
- O
header
, asection
comrole = "main"
e ofooter
NÃO são reconhecidos como controles assim como são no IE8
SAToGo 3.0.202
IE8
- todas as referências ARIA são encontradas e navegáveis, mas somente em uma direção (pressionando ; para a próxima referência), e o tipo de papel da referência não é anunciado
FF3.6
- todas as referências ARIA são encontradas e navegáveis em ambas direções (pressionando ; e Shift+;), mas o tipo de referência não é anunciada
SAToGo 3.1.24 (21 de maio de 2010)
IE8
- Ainda que essa versão de SAToGo agora permita navegação por referência ARIA em ambas as direções no IE8 (pressionando ; e Shift+;), esta não mais encontra o modelo de referência
complementary
- o tipo do modelo de referência continua não anunciado
FF3.6
- SAToGO ainda encontra referência, permite navegação em ambas as direções, e o tipo de modelo de referência permanece não anunciado
VoiceOver
Safari 4.0.3
- nenhuma referência ARIA encontrada
O conteúdo neste sítio de página é autorizado de acordo com uma Licença de Povo criativa Attribution-NonCommercial-ShareAlike 3.0