Abstract: En este articulo mostramos como podemos detectar si el cliente esta ejecutando Javascript lo que nos ayuda a hacer webs accesibles y funcionales.

Todos los que nos hemos tenido que enfrentar al problema de la accesibilidad, nos hemos encontrado con la disyuntiva de la usabilidad frente a la accesibilidad. ¿Hacer páginas web accesibles está reñido con la usabilidad? ¿Qué puedo hacer para no dejar de usar Javascript  y sin embargo la web sea accesible?

La realidad a la hora de hacer un desarrollo web , nos lleva a ver que hacer un site accesible no es complicado siempre que se sigan unas normas estrictas de diseño e implementación. Pero cuando  además se la quiere  dotar  de una buena experiencia de usuario la cosa cambia.

Hasta ahora hemos visto equipos de desarrollo que realizan dos portales , uno accesible y otro no accesible, de tal manera que según se activa o desactiva el Javascript la web va redirigiendo a una versión u a otra. Para nosotros esta solución tiene una gran desventaja,  ya que esto conlleva el mantenimiento de dos portales en paralelo,  lo que  puede crear incongruencias.  Aunque tiene la ventaja de que la página funcional es plenamente funcional  y  es plenamente accesible.

La otra solución es la de poner etiquetas noscript y dotar de esa funcionalidad a la web…

La solución que hoy proponemos trata de unir las etiquetas noscript con una nueva técnica que combina el Ajax y métodos de página, para poder detectar si está o no activo el Javascript

En lo primero que podemos pensar  es en  utilizar el objeto Request.Browser.JavaScript, sin embargo, esto trae problemas ya que solo dice si el navegador lo admite , pero no nos dice si está activo  (además está en desuso y dará un bonito Warning).

El código (en c#) de la solución propuesta es el siguiente:

public static bool JavascriptActivo { get; set; }

#region Eventos del formulario

protected void Page_Load(object sender, EventArgs e)

{

if (!IsPostback)

{

JavascriptActivo = false;

}

}

#endregion

 

[WebMethod]

public static void TieneJavascript()

{

JavascriptActivo = true;

}

Y en el aspx:

<asp:ScriptManager ID=”ScriptManager1″ runat=”server” EnablePageMethods=”True”>

</asp:ScriptManager>

 

<script language=”javascript” type=”text/javascript”>

 

PageMethods.TieneJavascript();

</script>

 

Con esto le estamos diciendo que queremos utilizar el método de página “TieneJavaScript”, el cual activa la propiedad estática  que define si utiliza Javascript. Y por último, en cada postback le decimos que la ponga  a false (que no utiliza Javascript). En realidad, el poner esta propiedad a false es para detectar si mantiene activo el Javascript.

La explicación es sencilla, según el ciclo de vida primero se ejecuta el  onload, y luego se renderiza la página, es entonces cuando se ejecuta el Javascript, que está funcionando por Ajax, y por lo tanto no realiza refresco de la página.

Si utiliza Javascript se hace la llamada al método de página y todo transcurre como se espera, si no, simplemente se actualiza la variable y se muestra la página sin javascript.

Conclusión:

El 28 de diciembre del 2007 se publicó la Ley  de Medidas de Impulso de la Sociedad de la Información. En la misma se obliga a los entes públicos a la eliminación de barreras de accesibilidad de sus sitios. Esta es la razón principal por la que todo desarrollador, debe aprender las reglas para realizar sus desarrollos web de forma accesible. Entre estas normas destacamos la imposibilidad de ejecución de javascript, o mejor dicho la opción de hacer lo mismo pero a traves del servidor.

Hasta ahora las medidas que se han tomado, pasaban por la duplicidad de codigo, redirigiendo a páginas accesibles y dejando el portal no accesible a disposición de usuarios sin limitaciones.

En nuestra solución damos un remedio a la situacion anterior, ya que al ejecutar el script a descargase la página detectamos en las primeras fases si se esta ejecutando o no, y en sucesivos postback. Estaremos seguro de cual es la situación actual de navegador.

Si a eso le sumamos que por defecto el estado del javascript del navegador cliente será estable nos da un maravilloso juego de probar una vez (en la página de inicio) y guardar dicho estado en la session de usuario.

Todo esto nos lleva a una amplia gama de posibilidades, pero siempre con la ventaja de no tener que duplicar el código

Anuncios