Acerca de Scriptia
Scriptia forma parte del PDM de Choan C. Gálvez, desarrollador web residente en Barcelona. Scriptia pretende mejorar la calidad de la documentación acerca de javascript disponible en español.
Saltar a Anotaciones relacionadas
Supongamos una linda interfaz en la que algunos elementos no se muestran hasta que el usuario realiza alguna acción. Supongamos que somos hombres de buen corazón y queremos que nuestra aplicación sea accesible sin necesidad de javascript.
1. Si ocultamos esos elementos mediante CSS, quien no tenga javascript no tendrá, jamás de los jamases, acceso a ellos.
2. Si ocultamos los elementos mediante javascript, se producirá algún que otro feo parpadeo (y si son muchos los elementos a ocultar, aumentará el tiempo de proceso).
Veamos cómo podemos evitar ambos problemas con una pequeña combinación de CSS y scripting.
Lo ideal sería que nuestra hoja de estilo supiera si disponemos o no de las funcionalidades javascript necesarias. ¿Imposible? No, amigo, nada es imposible.
Empezaremos por averiguar si el navegador utilizado es lo suficientemente poderoso como para manejar nuestro script:
var isSupported = document.getElementById && document.getElementsByTagName;
Si lo es, modificaremos el árbol del documento añadiendo una clase al elemento `html`:
if (isSupported) {
document.documentElement.className = "js";
}
Un par de notas:
1. Para modificar `document.documentElement` no es necesario esperar a que se complete la carga del documento.
2. La especificación HTML 4.01 no permite el uso del atributo `class` en el elemento `html`. En mi opinión, como la jugada la hacemos por scripting, esto no invalida el documento.
Y en el CSS, la magia:
.js #eula {
display: none;
}
Pruébalo, merece la pena.
Scriptia forma parte del PDM de Choan C. Gálvez, desarrollador web residente en Barcelona. Scriptia pretende mejorar la calidad de la documentación acerca de javascript disponible en español.
Un comentario RSS
1 Samuel Guzmán (2009-07-23 @ 10:28 pm):
Muy ingenioso de hecho, pero si utilizas la clase en la etiqueta en vez de en el html, el documento seguirá siendo válido. Además un buen truco que he utilizado es agregar clases específicas si el user-agent es Internet Explorer 6, 7, Safari/Chrome o Mozilla (Firefox, Camino y similares).
.js .mozilla {
-moz-opacity: 0.5;
}
.js .ie .transparente {
filter: alpha("opacity=50");
}