Acessibilidade em RIA

A acessibilidade na Web é um tópico amplamente discutido atualmente. Ainda assim, a proporção de websites que são acessíveis ainda é bastante limitada. Por exemplo, em pesquisa realizada pela WebAIM, em 2014, quando 1465 pessoas com deficiência foram perguntadas sobre o que poderia melhorar a acessibilidade na Web, 81,3% afirmaram que seria a melhoria na acessibilidade de websites. Ou seja, ainda que a navegação dependa de dispositivos, tecnologias assistivas, navegadores Web e sistemas operacionais, os websites são considerados a principal barreira de acessibilidade atualmente.

Quando consideramos as RIA esse cenário se torna ainda mais crítico. RIA tem os problemas de acessibilidade comuns aos websites e, além disso, outro problemas relacionados ao dinamismo e aos tipos de interação mais complexos. Exemplos de problemas são:

  • Consciência sobre eventos que ocorrem de maneira assíncrona (sem a necessidade de uma ação explícita do usuário) na aplicação;
  • Controle de histórico de navegação, dado que diversas ações são realizadas sem a necessidade de atualização da página inteira;
  • Falta de semântica dos componentes de interface, pois muitos deles são composições de elementos HTML simples como <div>, <a> e <p> e adaptados para se comportar como outros componentes, como listas em árvores e menus.

Para entender melhor quais os elementos envolvidos em uma navegação web uso de tecnologia assistiva, veja a Figura 1.

Este diagrama apresenta uma navegação web utilizando tecnologia assistiva. O usuário acessa a Web, a partir de seu computador, utilizando uma tecnologia assistiva, que pode ter tanto software como hardware. O navegador web é responsável por obter o conteúdo web e apresentar ao usuário. Quando o conteúdo é apresentado, seus dados são enviados à API de acessibilidade do sistema operacional do usuário que, transmite as informações necessárias à tecnologia assistiva.
Figura 1. Navegação na web com uso de tecnologia assistiva.

Quando uma pessoa com deficiência acessa o sistema operacional (por exemplo, Windows, Linux, MacOS) de um computador, por meio de uma tecnologia assistiva (por exemplo, leitor de telas, apresentador Libras, ampliador de telas, linhas braille), a API (Application Programming Interface) de acessibilidade do sistema operacional (por exemplo, Microsoft Active Accessibility (MSAA) para o Windows e OS X Accessibility Model para o MacOS). As API de acessibilidade dos sistemas operacionais tem a função de intermediar a comunicação entre a tecnologia assistiva com as demais aplicações que estejam sendo usadas pelo usuário.

O navegador Web (por exemplo, Mozilla Firefox, Safari, Internet Explorer, Google Chrome) tem a função de se comunicar com a Web por meio de requisições para endereços específicos, geralmente no formato de URLs (Unified Resource Locators). Ao receber o conteúdo requisitado (para nós interessa as páginas Web e os arquivos relacionados a elas como, folhas de estilo e arquivos de scripts client-side) o navegador interpreta o conteúdo e o apresenta ao usuário.

A principal diferença entre RIA e páginas web estáticas está na comunicação de novos conteúdos apresentados à API de acessibilidade e, consequentemente, à tecnololgia assistiva. Como nas páginas estáticas novos conteúdos são adicionados somente quando toda a página é carregada, é suficiente notificar a API somente quando isso ocorrer. No entanto, em RIA isso pode ocorrer a qualquer momento e sem atualizar toda a página, assim é necessário que essa comunicação de novos conteúdos seja feita de maneira a cada modificação da página.

O conjunto de recomendações WAI-ARIA, promovido pelo World Wide Web Consortium (W3C) tem essa finalidade. Isso é obtido por meio de duas ações principais: (1) aumentar a semântica do conteúdo que é apresentado visualmente (por exemplo, identificar que uma imagem está sendo usada como um botão, que uma lista de itens está sendo usada como um menu, que uma lista de links está sendo usada como uma lista em formato de árvore); (2) identificar regiões da página web em que ocorrem atualizações, de maneira que o navegador web possa avisar a API de acessibilidade das atualizações dinâmicas que ocorrem em uma página.

Referências

WebAIM. Screen Reader User Survey #5 Results.

W3C. WAI-ARIA Overview.