Detectar JavaScript com Ajax.net

Neste artigo mostramos como podemos detectar se o cliente web está executando Javascript, o que nos ajuda a fazer webs acessíveis e plenamente funcionais.

Por Fernando G. Muñoz-Tradução CRV


Publicado em: 26/7/11
Valorize este artigo:
À hora de desenvolver páginas web avançadas, muitos de nós tivemos que nos enfrentar com o problema da acessibilidade. Quase sempre, nesse caminho, nos encontramos com a disjuntiva da usabilidade frente à acessibilidade. Inevitavelmente nos fazemos esta pergunta: Fazer páginas web acessíveis está brigado com a usabilidade?

Talvez a pergunta anterior seja muito longa de analisar e possivelmente cada um de nós, de acordo com nossas próprias experiências, tenha uma resposta. Entretanto, neste artigo vamos nos centrar em uma questão um tanto mais específica, porém muito relacionada com a anterior: O que posso fazer para continuar usando Javascript e que no entanto a web seja acessível?

A realidade, à hora de fazer um desenvolvimento web , nos leva a entender que fazer um site acessível não é complicado, sempre que se sigam normas estritas de desenho e implementação. Porém, quando além disso, se quer dotar o projeto de uma boa experiência de usuário, a coisa muda.

Até agora vimos equipes de desenvolvimento que realizam dois portais , um acessível e outro não acessível, de tal maneira que segundo se ativa ou desativa o Javascript, a web vai redirecionando a uma versão ou a outra. Para nós, esta solução tem uma grande desvantagem, além da necessidade de duplicar nosso volume de trabalho, pois tal alternativa implica a manutenção de dois portais em paralelo, o que pode criar incoerências, embora tenha a vantagem da página ser plenamente funcional e plenamente acessível.

A outra solução é colocar etiquetas nãoscript e dotar a web dessa funcionalidade...

A solução que hoje propomos trata de unir as etiquetas nãoscript com uma nova técnica que combina o Ajax e os métodos de página, para poder detectar se está ou não ativo o motor Javascript no navegador do usuário.

No primeiro que podemos pensar é em utilizar o objeto Request.Browser.JavaScript, no entanto, isto traz problemas já que só diz se é admitido pelo navegador , mas não nos diz se está ativo (além do que esse objeto está em desuso e acessá- lo nos lançará um bonito Warning).

O código (em c#) da solução proposta é o seguinte:

public static bool JavascriptAtivo { get; set; }
#region Eventos do formulario
protected void Page_Load(object sender, EventArgs e)
{
JavascriptAtivo = false;

}

#endregion

[WebMethod]
public static void TemJavascript()
{
JavascriptAtivo = true;
}

Por sua parte, no aspx teríamos que utilizar o seguinte código:

<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="True">
</asp:ScriptManager>

<script language="javascript" type="text/javascript">
PageMethods.TemJavascript();
</script>

Com isto lhe estamos dizendo que queremos utilizar o método de página “TemJavaScript”, o qual ativa a propriedade estática que define se utiliza Javascript. E por último, em cada postback lhe dizemos que a coloque como false (que não utiliza Javascript). Em realidade, colocar esta propriedade como false é para detectar se mantém ativo o Javascript.

A explicação é simples. Segundo o ciclo de vida, primeiro se executa o onload, e depois se renderiza a página, é então quando se executa o Javascript, que está funcionando por Ajax, e portanto não realiza refresco da página.

Caso utilize Javascript se faz a chamada ao método de página e tudo transcorre como esperado, caso contrário, simplesmente se atualiza a variável e a página é exibida sem Javascript.

Conclusão:

No dia 28 de dezembro de 2007 foi publicada a Lei de Medidas de Impulso da Sociedade da Informação. Na mesma se obriga as entidades públicas a eliminarem as barreiras de acessibilidade de seus sites. Esta é a razão principal pela qual todo desenvolvedor, deve aprender as regras para realizar seus desenvolvimentos web de forma acessível. Entre estas normas destacamos a impossibilidade de execução de Javascript, ou melhor dito, a necessidade de criar uma opção mediante a qual se possa fazer o mesmo que se implementa com Javascript, mas com programação através do servidor.

Até agora as medidas que foram tomadas, passavam pela duplicidade de código, redirecionando a páginas acessíveis e deixando o portal não acessível à disposição de usuários sem limitações.

Em nossa solução damos um remédio aos inconvenientes da situação anterior, uma vez que ao executar o script a ser baixado na página detectamos nas primeiras fases se está sendo executado ou não, e em sucessivos postback estaremos seguros de qual é a situação atual de navegador.

Se a isso somamos que por padrão o estado do Javascript do navegador cliente será estável nos dá um maravilhoso jogo de testar uma vez (na página de início) e salvar tal estado na seção de usuário.

Todo isto nos leva a uma ampla gama de possibilidades, porém sempre com a vantagem de não ter que duplicar o códigoS





Comentários do artigo
Foi enviado 1 comentário ao artigo
1 comentário não revisado
0 comentários revisados

Usuários :    login / registro

Manuais relacionados
Categorias relacionadas
O autor

Home | Sobre nós | Copyright | Anuncie | Entrar em contato