Ajax accesible
Suele criticarse la poca accesibilidad de un sitio web cuando se trabaja con Javascript, pero la verdad es esto no tiene por qué ser así. De hecho, el problema de Javascript y la Accesibilidad es más bien de malas prácticas, no de Javascript.
Un uso común y errado es insertar código Javascript en la capa HTML:
Otro ejemplo similar:
El problema de ámbos ejemplos es que si el navegador tiene desactivado Javascript, el contenido del DIV showID no será visible y, por lo tanto, será completamente inaccesible.
Afortunadamente con el advenimiento de bibliotecas como Prototype, MooTools o Jquery es posible separar compeltamente el HTML de Javascript:
Y, por ejemplo, en el caso de Prototype, se puede detectar el evento onclick con la ayuda de Event.observe:
Así una vez detectado el click vemos si hay una función asociada al atributo rel del link (pero bien podría ser a otro atributo como id, clase, title, etc.). De ser así se ejecuta la función y listo, mostramos el elemento oculto. Si no hay javascript habilitado el ancla hará el scroll al elemento correspondiente que por defecto no está oculto.
Posiblemente hay otras formas mejores de hacer lo mismo… pero es un punto de partida
Tags: ajax, accesibilidad, html, javascript
Hola, uta max creo que me vay a tener que hacer un par de clases de esta cosilla, no logre aplicar el codigo que muestras, lo que tengo yo es lo siguiente:
var proto = {
hide : function(){
$$(’div[class=hide]’).map(function(s){$(s.id).hide()});
},
fx : function(e) {
var tag = Event.element(e).id;
var rel = Event.element(e).rel;
var url = Event.element(e).href;
if (rel==”eliminar”){
proto.confirmar(url);
}
if(tag!=”"){
if(eval(”this.”+tag)!=undefined){
$(tag).href = “javascript:proto.loadnothing(’”+tag+”‘,’”+url+”‘)”;
eval(”this.”+tag)(rel);
}
}
},
loadnothing : function (tag,url){
if ($(tag).rel==”eliminar”){
$(tag).href = url;
}else{
$(tag).href = “”;
}
false;
},
frase : function(){
Effect.toggle(’agreFrase’, ‘blind’,{duration:0.3});
if ($(’frase’).innerHTML!=”Cerrar”){
$(’frase’).innerHTML=”Cerrar”;
Effect.Appear(’filtro’,{duration:0.0,to:1});
var alto = $(’html’).getHeight();
if(alto