Hijax: Ajax Acessível

De longe, um dos maiores problemas no uso de Ajax é a acessibilidade. A facilidade em atualizar apenas uma parte da página tornou os desenvolvedores menos preocupados com a acessibilidade de seus projetos. Sem JavaScript, sites inteiros tornam-se completamente inacessíveis. Então, qual a solução para esse problema?

Para evitar que o caos venha a este mundo, surge outra palavrinha: Hijax. Mas primeiro vamos voltar a algumas premissas do desenvolvimento web: aprimoramento progressivo (progressive enhancement) e degradação elegante (graceful degradation), e me desculpem se errei a tradução dos termos…

Aprimoramento Progressivo – Primeiro o Conteúdo

Ninguém começa (ou pelo menos não deveria começar) a desenvolver uma aplicação primeiro pela camada de comportamento, isso vai completamente contra a filosofia de desenvolvimento em camadas (primeiro o conteúdo, depois a apresentação e, por último, o comportamento).

A idéia é começar o desenvolvimento de baixo. Em outras palavras, desenvolva da maneira antiga, usando links como sempre se usou desde que a Internet é Internet, devolvendo páginas inteiras como resposta. Depois, somente depois, comece a adicionar funcionalidades que melhorem a experiência do usuário (nada de frescuras que o usuário só vai achar bonito, pra que reinventar o link?).

Degradação Elegante – Útil sem perder a elegância

“Degradação elegante” significa perder alguns recursos sem perder suas funcionalidades. Pode-se perder algumas animações e outros fru-frus, mas perder acesso ao conteúdo é inadmissível. CSS não é tão importante quanto as informações que queremos mostrar. Nunca ouviu a frase “mais ajuda quem não atrapalha”? A idéia é a mesma.

O desenvolvimento progressivo e em camadas é o caminho mais rápido para a degradação elegante. Mesmo utilizando Ajax, o conteúdo ainda deve continuar acessível através de um link comum. É aí onde Hijax entra.

Hijax – Seqüestrando os Links

O próprio termo explica bem o uso da técnica. Hijax, do inglês hijack (“seqüestrar”), quer dizer seqüestrar os links comuns, e transformá-los em links Ajax. Simples assim.

“Simples assim”? Bem, nem tanto, eu confesso. Seus scripts server-side precisam estar preparados para decidir se enviam o “pacote completo” ou a “versão básica” da página, se for uma requisição normal ou uma requisição assíncrona, respectivamente. Uma breve dica: header X-Requested-With. Duas versões do site? Nunca mais, isso morreu junto com o Netscape, há muito tempo.

Vale lembrar que somente o uso de Hijax não faz uma aplicação completamente acessível, usável e rica. Há muito mais a se pensar. Já falei sobre alguns aspectos para uma boa aplicação Ajax, mas tenho absoluta certeza que não passei nem perto de tudo que é necessário. Mas tudo isso já é uma boa base a ser levada em consideração, e com isso já é possível criar algo melhor que muita coisa que existe por aí, tenha certeza. E você, tem feito seu dever de casa e seguido princípios para tornar sua aplicação disponível a todos?

Posts Relacionados

Postado em maio 22, 2008 às 17:08

Comentários

  1. Rodrigo Fante

    Isso eh uma das coisas boas no meu trampo novo, eh o primeiro lugar onde trabalho onde as pessoas levam acessibilidade, usabilidade e padroes web realmente a serio… Ajax eh um excelente auxilio a um site, mas deve ser isso, um plus, um algo a mais, sem jamais atrapalhar o conteudo, excecao feita para aplicativos web, mas ai eh outra historia…


  2. Rafael Marin

    A tradução está certa sim ;D


  3. JulioGreff

    @Rodrigo: mesmo em aplicativos, deve-se assegurar um mínimo de acessibilidade onde é possível. Nunca é demais!
    @Rafael: valeu!

    Até mais!


  4. Micox

    Isso aí é uma coisa muito importante. Em tudo. Ótimo artigo julio.
    Em breve farei um artigo no meu blog mostrando como eu implemento isso aí no lado do cliente e, principamente, no lado do servidor pra evitar o retrabalho. É até bom pra eu receber sugestões de melhora heheh.
    mas só vou fazer quando eu tiver com tempo novamente.


  5. JulioGreff

    @Micox: quando escrever, pode deixar que eu deixo um link aqui, vai ser de grande valia! Ficamos aguardando!

    Até mais!


  6. Mounter

    Artigo muito bom, atualmente eu faço primeiramente o layout e dou prioridade ao conteúdo, depois vejo se ponho o AJAX e eu faço uso de window.onload e pegar os elementos que vou alterar usando o ID ou localizando as classes dentro do documento e repassando o comportamento a elas.

    Acho que quando ao conteúdo dinâmico ficaria mais a cargo do usuário escolher ativa-lo ou não, somente enviando a pergunta a primeira vez ao usuário… E para facilitar poderia fazer componente que pega entrada do banco de dados por consultas e transforme em um XML.

    Até mais.


  7. JulioGreff

    @Mounter: acho que a idéia de perguntar ao usuário não é uma boa idéia. Se os recursos realmente são úteis ao usuário, é melhor ativá-los sempre que possível, e não apenas caso o usuário escolha.


  8. Mounter

    @JulioGreff: Realmente, mas isso fica mais parecendo que o usuário não sabe o que quer e que devemos supor o que seria o melhor para ele.

    Temos duas abordagens, deixar a cargo do usuário ou decidir, se inicialmente deixamos caso o browser tenha condições, ativado e o usuário caso não goste desativar ou o inverso.

    Até mais.


  9. Heaven

    @Mounter: Mas o usuário nem sabe o que de fato quer, para mim o uso de ajax só é aceito apenas quando o mesmo por possível, caso contrário que venha a abordagem hijax.


Deixe seu comentário