<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Niquelao &#187; Accesibilidad</title>
	<atom:link href="http://www.niquelao.net/category/accesibilidad/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.niquelao.net</link>
	<description>¿Cómo dices que te ha quedado?</description>
	<lastBuildDate>Wed, 10 Feb 2010 16:59:46 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Una de extensiones: HeadingsMap y WCAG Contrast checker</title>
		<link>http://www.niquelao.net/xhtml/2008/05/31/una-de-extensiones-headingsmap-y-colorchecker/</link>
		<comments>http://www.niquelao.net/xhtml/2008/05/31/una-de-extensiones-headingsmap-y-colorchecker/#comments</comments>
		<pubDate>Sat, 31 May 2008 10:51:31 +0000</pubDate>
		<dc:creator>Rumoroso</dc:creator>
				<category><![CDATA[(X)HTML]]></category>
		<category><![CDATA[Accesibilidad]]></category>

		<guid isPermaLink="false">http://www.niquelao.net/xhtml/2008/05/31/una-de-extensiones-headingsmap-y-colorchecker/</guid>
		<description><![CDATA[Pues si, por fin me he decidido a publicar un par de extensiones para Firefox. Después de batir toda clase de records en cuanto a número de extensiones en mi Firefox, el siguiente paso natural era ponerme a preparar (&#8220;desarrollar&#8221; &#8230; <a href="http://www.niquelao.net/xhtml/2008/05/31/una-de-extensiones-headingsmap-y-colorchecker/">Sigue leyendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Pues si, por fin me he decidido a publicar un par de extensiones para <a href="https://addons.mozilla.org/es-ES/firefox/">Firefox</a>. Después de batir toda clase de records en cuanto a número de extensiones en mi Firefox, el siguiente paso natural era ponerme a preparar (&#8220;desarrollar&#8221; suena demasiado pretencioso) las mias propias. Aquí traigo las dos primeras que hago públicas: <a href="http://www.niquelao.net/extension-headingsmap/">headingsMap</a> y <a href="http://www.niquelao.net/extension-colorchecker/">WCAG Contrast checker</a>.</p>
<p><span id="more-93"></span></p>
<h3>headingsMap</h3>
<p>Esta extensión genera un índice (o mapa) de cualquier documento web estructurado mediante el uso de encabezados, de tal manera que pulsando sobre cualquiera de los items de dicho mapa, se accede directamente al contenido correspondiente de la página.</p>
<p>Sí, ya lo se, esto mismo lo hace también otra extensión (<a href="https://addons.mozilla.org/es-ES/firefox/addon/475">documentmap</a>). La diferencia estriba en que <strong>headingsMap</strong>, además de indicar los niveles de cada encabezado y los posibles errores que pudiera haber en su secuencia (por ejemplo, los saltos inadecuados), en el caso de haber marcos (FRAMESET e IFRAMES) también genera el mapa para cada uno de ellos. De esta manera, se convierte en una herramienta útil tanto para la navegación por el documento como para revisar y/o auditar sitios web (en cuanto a accesibilidad, estándares, etc).</p>
<p>Como no podia ser menos, también se le ha añadido una funcionalidad adicional. En el caso de que el documento web al que se esté accediendo sea una presentación en formato web hecha con <a href="http://niquelao.net/wp-content/uploads/2007/4/acc_slide/mini/">acc_slide (o rumoslide)</a> o con <a href="http://www.w3.org/Talks/Tools/Slidy/">HTML Slidy</a>, la extensión funciona como un índice, permitiendo acceder directamente a la diapositiva que se desee.</p>
<p>En la página de la <a href="http://www.niquelao.net/extension-headingsmap/">extensión headingsMap</a> se puede encontrar más información, así como en <a href="https://addons.mozilla.org/es-ES/firefox/addon/7203">Firefox add-ons</a>.</p>
<p>Al instalar la extensión, aparece un icono en la barra de estado que despliega el panel lateral en el que se muestra la estructura de encabezados. También se puede acceder mediante la combinación del teclado <kbd>Alt + O</kbd>.</p>
<p class="ejemplo"><img class="ejemplo" alt="Pantallazo en el que se muestra la extensión headingsMap" src="http://www.niquelao.net/wp-content/uploads/2008/05/primera.png" /></p>
<h3>WCAG Contrast checker</h3>
<p>Mediante esta extensión se puede comprobar si la combinación de dos colores es adecuada para su percepción visual en base a los requerimientos de las <a href="http://www.w3.org/TR/WCAG10/wai-pageauth.html#tech-color-contrast">WCAG 1</a> y <a href="http://www.w3.org/TR/2008/CR-WCAG20-20080430/#visual-audio-contrast-contrast">WCAG 2</a>, empleando para ello el algoritmo que estas proponen. Dado que el algoritmo incluido en las WCAG 2 parece ser más preciso, el resultado de este es el que se muestra por defecto.</p>
<p>En un panel lateral se ofrece la posibilidad de introducir el código de los dos colores que se quieren comparar, mostrándose los resultados tanto para el caso de una percepción normal de los colores, como para situaciones tales como la protanopia, deuteranopia y tritanopia.</p>
<p>El código de color se puede introducir tanto en formato hexadecimal (en forma abreviada o no, y tanto con almohadilla como sin ella), como en RGB (pudiendo usar diferentes separadores entre los valores, como por ejemplo la coma o los dos puntos). Ej:</p>
<ul>
<li>En hexadecimal se podría poner: #FC5 ó FC5 ó FFCC55</li>
<li>En formato RGB se podría poner: 231,28,197 ó 231:28:197 ó rgb(231,28,197)</li>
</ul>
<p>El uso de la extensión <strong>WCAG Contrast checker</strong> se puede combinar con la extensión <a href="http://www.iosart.com/firefox/colorzilla/">ColorZilla</a>, pues esta permite seleccionar directamente desde el documento web (y copiar al portapapeles) el color que se quiera comprobar. Si se tiene dicha extensión instalada, WCAG Contrast checker reconocerá su presencia. En este caso, pulsando <kbd>Shift + Z</kbd> ó <kbd>Shift + X</kbd> se activará el eyedropper del ColorZilla y se enviará de forma automática, bien el color de primer plano, bien el de fondo, al WCAG Contrast checker para su análisis.</p>
<p>La extensión hace aparecer un icono en la barra de estado que al pulsarlo despliega el panel lateral, pudiendo acceder también mediante la combinación del teclado <kbd>Alt + C</kbd>.</p>
<p>En la página de la <a href="http://www.niquelao.net/wcag_contrast_checker/">extensión WCAG Contrast checker</a> y en <a href="https://addons.mozilla.org/es-ES/firefox/addon/7391">Firefox Add-ons</a> hay más información, además del enlace para la descarga.</p>
<p class="ejemplo"><img class="ejemplo" alt="Pantallazo en el que se muestra la extensión WCAG Contrast checker" src="http://www.niquelao.net/wp-content/uploads/2008/05/screenshot2.jpg" /></p>
            <a href="http://twitter.com/share" class="twitter-share-button" data-count="" data-text="Una de extensiones: HeadingsMap y WCAG Contrast checker" data-via="" data-url="http://www.niquelao.net/xhtml/2008/05/31/una-de-extensiones-headingsmap-y-colorchecker/" >Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script>]]></content:encoded>
			<wfw:commentRss>http://www.niquelao.net/xhtml/2008/05/31/una-de-extensiones-headingsmap-y-colorchecker/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Días disponibles con acc_calendar</title>
		<link>http://www.niquelao.net/accesibilidad/2007/07/07/fitro-de-dias-en-acc_calendar/</link>
		<comments>http://www.niquelao.net/accesibilidad/2007/07/07/fitro-de-dias-en-acc_calendar/#comments</comments>
		<pubDate>Sat, 07 Jul 2007 10:49:29 +0000</pubDate>
		<dc:creator>Rumoroso</dc:creator>
				<category><![CDATA[Accesibilidad]]></category>
		<category><![CDATA[Javascript]]></category>

		<guid isPermaLink="false">http://www.niquelao.net/accesibilidad/2007/07/06/fitro-de-dias-en-acc_calendar/</guid>
		<description><![CDATA[En estas fechas estivales es frecuente acudir a sitios web que ofrecen viajes, vuelos, hoteles… En todos ellos hay al menos un campo para introducir fechas y suele ser frecuente que además exista un calendario que nos permita seleccionarlas. Para &#8230; <a href="http://www.niquelao.net/accesibilidad/2007/07/07/fitro-de-dias-en-acc_calendar/">Sigue leyendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>En estas fechas estivales es frecuente acudir a sitios web que ofrecen viajes, vuelos, hoteles… En todos ellos hay al menos un campo para introducir fechas y suele ser frecuente que además exista un calendario que nos permita seleccionarlas.</p>
<p><span id="more-66"></span></p>
<p>Para evitar las frustrantes esperas que hemos de sufrir cuando, tras realizar la consulta, la fecha elegida no está disponible, en algunos sitios el calendario las filtra ofreciendo sólo las que si lo estan. Esto me hizo pensar que al <a href="http://www.niquelao.net/acc_calendar-calendario-accesible-en-javascript-innecesario-pero-util/">acc_calendar</a> le hacía falta esa posibilidad para quedar (al menos un poco) <strong>“niquelao”</strong>.</p>
<p>Dicho y (tras un buen rato) hecho. Mediante un toque de ajax, podemos aplicar un filtro sobre el calendario para que únicamente permita la selección de determinadas fechas. Para ello, de forma opcional añadiremos la clase <code>disp</code> en el campo de texto para la fecha. En el <code>script</code> hay disponible una variable (<var>fichero_consulta</var>) en la que indicar la dirección que resolverá la consulta de días disponibles en el servidor.</p>
<p>El envío se hace mediante el método POST y las variables son el mes y el año (<var>month</var>, en formato numérico, y <var>year</var>). El servidor ha de devolver los días disponibles en forma de texto y separados por comas. Por ejemplo, con php podría devolver la cadena <samp>12,13,14,17,21,28,29</samp> mediante un simple <code>echo</code>.</p>
<p>Ya he retocado el <a href="http://www.niquelao.net/acc_calendar-calendario-accesible-en-javascript-innecesario-pero-util/#julio2007">artículo original</a> dedicado al calendario para detallar (otra vez) esta funcionalidad e incluir un ejemplo.</p>
<p>Si alguno de vosotros piensa que es mejorable, que lo diga. Yo por mi parte haré lo que pueda (teniendo en cuenta que estoy de vacaciones).</p>
            <a href="http://twitter.com/share" class="twitter-share-button" data-count="" data-text="Días disponibles con acc_calendar" data-via="" data-url="http://www.niquelao.net/accesibilidad/2007/07/07/fitro-de-dias-en-acc_calendar/" >Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script>]]></content:encoded>
			<wfw:commentRss>http://www.niquelao.net/accesibilidad/2007/07/07/fitro-de-dias-en-acc_calendar/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>acc_slide: Presentaciones con XHTML, CSS y javascript</title>
		<link>http://www.niquelao.net/css/2007/04/15/acc_slide-presentaciones-con-xhtml-css-y-javascript/</link>
		<comments>http://www.niquelao.net/css/2007/04/15/acc_slide-presentaciones-con-xhtml-css-y-javascript/#comments</comments>
		<pubDate>Sun, 15 Apr 2007 19:24:50 +0000</pubDate>
		<dc:creator>Rumoroso</dc:creator>
				<category><![CDATA[(X)HTML]]></category>
		<category><![CDATA[Accesibilidad]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Javascript]]></category>

		<guid isPermaLink="false">http://www.niquelao.net/css/2007/04/15/acc_slide-presentaciones-con-xhtml-css-y-javascript/</guid>
		<description><![CDATA[Por fin ha llegado el momento de publicarlo. Hacía tiempo que estaba en ello pero por un motivo u otro no pude hacerlo hasta ahora. Aquí está el nuevo sistema para realizar presentaciones con XHTML, CSS y javascript. Supongo que &#8230; <a href="http://www.niquelao.net/css/2007/04/15/acc_slide-presentaciones-con-xhtml-css-y-javascript/">Sigue leyendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Por fin ha llegado el momento de publicarlo. Hacía tiempo que estaba en ello pero por un motivo u otro no pude hacerlo hasta ahora. Aquí está el nuevo sistema para realizar presentaciones con XHTML, CSS y javascript.</p>
<p><span id="more-61"></span></p>
<p>Supongo que alguno ya conocerá más de un sistema de los que habitualmente se utilizan, como por ejemplo el <a href="http://www.w3.org/Talks/Tools/Slidy/" title="enlace externo" class="externo">HTML Slidy</a> del W3C o el <a href="http://meyerweb.com/eric/tools/s5/s5-intro.html" title="enlace externo" class="externo">S5</a> de Eric Meyer. Tras utilizarlos llegué a la conclusión de que, aunque buenos, había algo que quizás podría ser mejorable (según mi criterio, claro).</p>
<p>Como he dicho, ambos sistemas son buenos y válidos, pero en ambos se hace necesario utilizar marcado cuya única finalidad es la de servir para que el script lo utilice y aplique estilos sobre él. Si realmente se quiere tener algo eficaz, <strong>¿por qué no hacer que el propio script genere el marcado que necesita de forma inteligente?</strong></p>
<h3>El desarrollo</h3>
<p>Me puse manos a la obra con la siguiente premisa: Si tenemos un documento correctamente estructurado y marcado (con sus encabezados, párrafos, listas&#8230;), el script debe ser lo suficientemente inteligente como para organizar y generar la presentación, todo ello sin incluir ningún contenedor adicional, ni clases, ni id. Únicamente ha de ser la propia estructura del documento la que permita diferenciar lo que se tiene que incluir en cada diapositiva.</p>
<p>Tras pegarme con ello, aquí está el resultado. El <strong>acc_slide</strong>, o como Andrés y Maroto lo llaman, <strong>rumo_slide</strong> o <strong>slide_oso</strong>. En lugar de seguir escribiendo más acerca de ello, lo mejor es demostrar de lo que estoy hablando. He preparado dos presentaciones, ambas con la descripción del sistema y de su utilización. La diferencia entre ambas es el grado de resumen. No dudéis en echar un vistazo al marcado que he empleado para ver de lo que estoy hablando:</p>
<p><strong>nota:</strong> aunque la forma de navegación por la presentación se trata en la misma, la forma básica de moverse por los contenidos se realiza con las flechas (arriba y abajo) del teclado.</p>
<ul>
<li><a href="http://niquelao.net/wp-content/uploads/2007/4/acc_slide/mini/">Versión reducida</a> y <a href="http://niquelao.net/wp-content/uploads/2007/4/acc_slide/mini/acc_slide.zip" title="archivo comprimido en formato zip">Versión reducida descargable</a></li>
<li><a href="http://niquelao.net/wp-content/uploads/2007/4/acc_slide/">Versión extendida (si, muy extendida)</a> y <a href="http://niquelao.net/wp-content/uploads/2007/4/acc_slide/version_ampliada/acc_slide_ampl.zip" title="archivo comprimido en formato zip">Versión extendida descargable</a></li>
</ul>
<h3>Características básicas</h3>
<p><em>acc_slide</em> ha sido creado teniendo como objetivo la separación absoluta entre el contenido y el comportamiento, evitando cualquier consideración acerca de este al crear y marcar la información que se quiera mostrar.</p>
<p>Entre las características que el sistema de presentaciones <em>acc_slide</em> posee se pueden destacar:</p>
<ul>
<li>Únicamente requiere de una correcta y lógica estructuración del contenido mediante el uso de encabezados. No necesita de elementos adicionales más allá de los necesarios para el marcado semántico del contenido. El sistema reconstruye y adapta el árbol DOM, con lo que no impone la necesidad de un marcado concreto. Esto lo hace compatible con cualquier documento (X)HTML bien estructurado (incluso con los que incluyen el marcado empleado por otros sistemas de presentaciones). Esto lo hace totalmente versatil. Se podría utilizar sobre un documento web, sobre el marcado empleado en los otros sistemas de presentaciones, etc.</li>
<li>Respetuoso con los estándares y la accesibilidad.</li>
<li>Separación absoluta de contenido, presentación y comportamiento.</li>
<li>Fácil integración y fácil utilización. No requiere conocimientos específicos, y si se utiliza uno de los temas propuestos, no es necesario conocer CSS.</li>
<li>Permite crear secciones con grupos de diapositivas.</li>
<li>El aspecto gráfico ofrece gran versatilidad y se controla totalmente con CSS. Además se pueden crear varios estilos y jugar con la especificidad de selector para aplicarlos (y combinarlos) en caliente (mientras se ejecuta la presentación).</li>
<li>Sistema <em>autoplay</em> de reproducción automática.</li>
<li>Incorpora un sistema para abrir enlaces de forma integrada a la presentación. Si se incluye el atributo <code>title</code> en el enlace, el contenido de este se mostrará al pié de la ventana. Además, el destino del enlace puede ser una URL o una imagen.</li>
<li>Cada diapositiva se asocia con un ancla de tal manera que se puede ir directamente a la que se desee. El ancla coincide con la posición de la diapositiva en la presentación.</li>
</ul>
<p>Llegados a este punto, espero vuestro feedback. También estaba pensando crear un repositorio público de estilos para el sistema. Si os parece una buena idea y queréis participar con los vuestros, no lo dudéis. Podéis enviar vuestros temas a <a href="mailto:rumoroso@niquelao.net">rumoroso@niquelao.net</a></p>
            <a href="http://twitter.com/share" class="twitter-share-button" data-count="" data-text="acc_slide: Presentaciones con XHTML, CSS y javascript" data-via="" data-url="http://www.niquelao.net/css/2007/04/15/acc_slide-presentaciones-con-xhtml-css-y-javascript/" >Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script>]]></content:encoded>
			<wfw:commentRss>http://www.niquelao.net/css/2007/04/15/acc_slide-presentaciones-con-xhtml-css-y-javascript/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Actualización de acc_calendar</title>
		<link>http://www.niquelao.net/accesibilidad/2007/04/04/actualizacion-de-acc_calendar/</link>
		<comments>http://www.niquelao.net/accesibilidad/2007/04/04/actualizacion-de-acc_calendar/#comments</comments>
		<pubDate>Wed, 04 Apr 2007 18:16:57 +0000</pubDate>
		<dc:creator>Rumoroso</dc:creator>
				<category><![CDATA[Accesibilidad]]></category>
		<category><![CDATA[Javascript]]></category>

		<guid isPermaLink="false">http://www.niquelao.net/accesibilidad/2007/04/04/actualizacion-de-acc_calendar/</guid>
		<description><![CDATA[Ya se que parece que soy recurrente con los mismos temas. Primero fue la saga de los formularios y ahora parece que viene la de los calendarios. Tras observar la posible versatilidad de otros calendarios que se cargan con javascript, &#8230; <a href="http://www.niquelao.net/accesibilidad/2007/04/04/actualizacion-de-acc_calendar/">Sigue leyendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Ya se que parece que soy recurrente con los mismos temas. Primero fue la saga de los formularios y ahora parece que viene la de los calendarios.</p>
<p>Tras observar la posible versatilidad de otros calendarios que se cargan con javascript, me he decidido a implementar un nuevo cambio y retocar/actualizar <a href="http://www.niquelao.net/acc_calendar-calendario-accesible-en-javascript-innecesario-pero-util/">el artículo original</a>.</p>
<p><span id="more-60"></span></p>
<p>El cambio consiste en la posibilidad de utilizar el calendario para cargar cada uno de los datos de la fecha en un campo de texto independiente. Asímismo, he decidido eliminar ciertos estilos que se aplicaban desde el propio script para que todo lo referente a la presentación sea una tarea de CSS.</p>
<p>Espero vuestro feed-back.</p>
            <a href="http://twitter.com/share" class="twitter-share-button" data-count="" data-text="Actualización de acc_calendar" data-via="" data-url="http://www.niquelao.net/accesibilidad/2007/04/04/actualizacion-de-acc_calendar/" >Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script>]]></content:encoded>
			<wfw:commentRss>http://www.niquelao.net/accesibilidad/2007/04/04/actualizacion-de-acc_calendar/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>acc_calendar v1.1</title>
		<link>http://www.niquelao.net/accesibilidad/2007/03/12/acc_calendar-v11/</link>
		<comments>http://www.niquelao.net/accesibilidad/2007/03/12/acc_calendar-v11/#comments</comments>
		<pubDate>Mon, 12 Mar 2007 17:56:08 +0000</pubDate>
		<dc:creator>Rumoroso</dc:creator>
				<category><![CDATA[Accesibilidad]]></category>
		<category><![CDATA[Javascript]]></category>

		<guid isPermaLink="false">http://www.niquelao.net/accesibilidad/2007/03/13/acc_calendar-v11/</guid>
		<description><![CDATA[Hasta el ahora, el script funcionaba ejecutándose al cargar el documento. El problema surgía cuando de forma dinámica, como por ejemplo con el uso de Ajax, se introducían nuevos campos en los que se quería utilizar el calendario. Como se &#8230; <a href="http://www.niquelao.net/accesibilidad/2007/03/12/acc_calendar-v11/">Sigue leyendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Hasta el ahora, el script funcionaba ejecutándose al cargar el documento. El problema surgía cuando de forma dinámica, como por ejemplo con el uso de <strong>Ajax</strong>, se introducían nuevos campos en los que se quería utilizar el calendario. Como se crean después de la carga del contenido, estos no cargarían los enlaces para generarlo. He introducido un cambio para que esto quede solventado.</p>
<p><span id="more-59"></span></p>
<p>El nuevo script tiene una pequeña modificación tal que si en cualquier momento se introducen nuevos campos de texto bastará con llamar posteriormente a la función <code>cargaLinks()</code> para que todo funcione como se desea.</p>
<p>Se puede acceder al artículo completo del calendario (con la revisión incluida) desde <a href="http://www.niquelao.net/acc_calendar-calendario-accesible-en-javascript-innecesario-pero-util/">acc_calendar v1.1</a> o desde el enlace permanente del área de Recursos de la página principal.</p>
<p><strong>nota:</strong> Lo que no podemos olvidar es que para que los nuevos <code>input</code> asocien el enlace para la apertura del calendario tendrán que poseer las clases ya indicadas en el anterior artículo.</p>
            <a href="http://twitter.com/share" class="twitter-share-button" data-count="" data-text="acc_calendar v1.1" data-via="" data-url="http://www.niquelao.net/accesibilidad/2007/03/12/acc_calendar-v11/" >Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script>]]></content:encoded>
			<wfw:commentRss>http://www.niquelao.net/accesibilidad/2007/03/12/acc_calendar-v11/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Calendario accesible en javascript (innecesario pero útil)</title>
		<link>http://www.niquelao.net/accesibilidad/2007/02/11/acc_calendar-calendario-en-javascript-innecesario-pero-util/</link>
		<comments>http://www.niquelao.net/accesibilidad/2007/02/11/acc_calendar-calendario-en-javascript-innecesario-pero-util/#comments</comments>
		<pubDate>Sun, 11 Feb 2007 10:22:02 +0000</pubDate>
		<dc:creator>Rumoroso</dc:creator>
				<category><![CDATA[Accesibilidad]]></category>
		<category><![CDATA[Javascript]]></category>

		<guid isPermaLink="false">http://www.niquelao.net/accesibilidad/2007/02/11/acc_calendar-calendario-en-javascript-innecesario-pero-util/</guid>
		<description><![CDATA[En los campos de formulario en los que se tiene que introducir una fecha, de cara a mejorar la experiencia de usuario, y a la par que se aumenta el control en el formato de los datos, se puede incluir &#8230; <a href="http://www.niquelao.net/accesibilidad/2007/02/11/acc_calendar-calendario-en-javascript-innecesario-pero-util/">Sigue leyendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>En los campos de formulario en los que se tiene que introducir una fecha, de cara a mejorar la experiencia de usuario, y a la par que se aumenta el control en el formato de los datos, se puede incluir un calendario mediante javascript. Lo se, <strong>palabra maldita</strong>, aunque si se hace con cuidado y control, no tiene por qué tener implicaciones negativas en cuanto a estándares y accesibilidad.</p>
<p><span id="more-58"></span></p>
<h3>Objetivos</h3>
<p>En principio he establecido dos objetivos principales, que más que objetivos han sido pautas de trabajo a la hora de construirlo:</p>
<ul>
<li><strong>Que sea accesible y no intrusivo.</strong> Evidentemente, en ausencia de soporte para javascript no se ofrece la opción de desplegar el calendario, pero, si hay soporte…  ¿por qué no hacer que el contenido generado sea accesible y utilizable?</li>
<li><strong>Que sea fácil de implementar y utilizar.</strong> He buscado una forma tal los programadores que deseen implementarlo en sus páginas web no requieran de introducir código adicional. Al igual que en CSS se utilizan diversos tipos de selectores (de elementos, id, clases,…) para asociar estilos a las diferentes partes de nuestros documentos, ¿por qué no utilizar lo mismo para asociar comportamientos?</li>
</ul>
<p>Además, como objetivos secundarios están: optimizar, generalizar, internacionalizar,… (siendo realista, tuve que eliminar los objetivos de ligar y el de ganar dinero.)</p>
<h3>El ejemplo</h3>
<p>Para comprobar su funcionamiento, podéis <a href="http://www.niquelao.net/acc_calendar-calendario-accesible-en-javascript-innecesario-pero-util" title="ejemplo de funcionamiento e implantación">acceder a un ejemplo</a> y <a href="http://niquelao.net/wp-content/uploads/2007/07/acc_calendar/acc_calendar.zip" title="descargar del ejemplo en formato comprimido zip">descargarlo</a>.</p>
<h3>Incluyéndolo en nuestros documentos</h3>
<p>La inclusión del calendario en nuestro documento es tan sencillo como incluir el elemento <code>script</code> correspondiente en el <code>head</code>:</p>
<p class="ejemplo">
<pre>&lt;script type="text/javascript" src="acc_calendar/acc_calendar.js"&gt;&lt;/script&gt;</pre>
<p>El calendario se cargará para cualquier campo de texto que lleve incluida la clase “<code>fecha</code>“. El formato de la fecha se introduce en la primera línea del script. Así, si por ejemplo se desea que la fecha siga el orden día/mes/año, no incluyendo un 0 delante del día cuando esté formada por un dígito, e incluyéndolo en el mes cuando sea necesario:</p>
<p class="ejemplo">
<pre>var formato = 'd/mm/y';</pre>
<p>Para conseguir mostrar el calendario junto a un campo de texto, este deberá llevar la clase “fecha”. Además, todos los posibles parámetros se introducen como clases. La lista completa es la siguiente:</p>
<ul>
<li>Cargar calendario (requerido): <code>fecha</code></li>
<li>Fechas previas a hoy: <code>prev</code></li>
<li>Fechas posteriores a hoy: <code>post</code></li>
<li>Rango de años: <code>rangX</code> (siendo X el número de años)</li>
<li>No se incluye el día actual: <code>todnact</code></li>
</ul>
<h3>Ventajas</h3>
<p>Entre las ventajas que se le pueden atribuir tenemos:</p>
<ul>
<li>Fácil de usar e implementar.</li>
<li>No es intrusivo.</li>
<li>El código y el contenido que se genera es accesible (marcado, organización, contenido,…) y es utilizable mediante el uso de ayudas técnicas (lector de pantalla,…). En este punto se ha tenido en cuenta en qué lugar recae el foco tanto al mostrarse como durante el funcionamiento y al desaparecer. Así, cuando se muestra, el foco recae directamente sobre el selector de años, siguiendo un orden lógico al tabular desde él, y cuando se cierra el calendario (mediante el enlace de cierre o tras haber seleccionado una fecha) el foco recae sobre el campo de texto al que se le había asociado.</li>
<li>Se facilita la navegación por el mismo independientemente del dispositivo. Se puede navegar utilizando cualquiera de los dispositivos con los que podamos navegar por la web.</li>
<li>Sus parámetros son fácilmente configurables y su llamada muy simple (mediante el uso de nombres de clase).</li>
<li>El idioma lo toma directamente del documento padre, pudiendo añadir traducciones nuevas al código. En el caso de no estar declarado el idimoa en el documento (cosa que no debe ocurrir), el español será el que se utilice por defecto. Actualmente, además del español incluye el inglés. Adicionalmente se ha hecho que reconozca si es inglés americano, no porque vaya a cambiar el contenido, sino para cambiar la disposición de los días de la semana (el domingo se coloca primero).</li>
<li>Los estilos aplicados al calendario se incluyen mediante una CSS enlazada por medio del script, con lo que en ausencia de soporte para este, se optimiza la descarga del documento al no llamarse a dicha hoja de estilos.</li>
<li>Se han incluido clases de tal manera que se puedan aplicar estilos sobre cualquiera de las celdas de la tabla (días activos, días no activos, día actual), así como estilos específicos para los sábados o domingos.</li>
</ul>
<h3>Código generado</h3>
<p>A continuación incluyo parte del código generado por el script. Como se puede observar (y como ya he dicho) se incluyen nombres de clase e id para poder controlar la maquetación mediante la hoja de estilos.</p>
<pre>&lt;a title="Desplegar el calendario para seleccionar una fecha" href="#" class="enl_cal"&gt;
	&lt;img alt="" src="acc_calendar/acc_calendar.gif" /&gt;
&lt;/a&gt;
&lt;div id="calendar"&gt;
	&lt;label id="label_year" for="nav_year_select"&gt;Año
		&lt;select id="nav_year_select"&gt;
			...
			&lt;option&gt;1987&lt;/option&gt;
			&lt;option selected="selected"&gt;1988&lt;/option&gt;
			...
		&lt;/select&gt;
	&lt;/label&gt;
	&lt;label id="label_Meses" for="nav_mes_select"&gt;Mes
		&lt;select id="nav_mes_select"&gt;
			&lt;option selected="selected"&gt;Enero&lt;/option&gt;
			&lt;option&gt;Febrero&lt;/option&gt;
			&lt;option&gt;Marzo&lt;/option&gt;
			...
		&lt;/select&gt;
	&lt;/label&gt;
	&lt;table summary="Calendario con los días disponibles de Enero de 2007" id="calendario"&gt;
		&lt;caption id="caption"&gt;Enero 2007&lt;/caption&gt;
		&lt;colgroup span="5"&gt;&lt;/colgroup&gt;
		&lt;colgroup span="2"&gt;&lt;/colgroup&gt;
		&lt;thead&gt;
			&lt;tr&gt;
				&lt;th scope="col"&gt;&lt;abbr title="Lunes"&gt;Lun&lt;/abbr&gt;&lt;/th&gt;
				&lt;th scope="col"&gt;&lt;abbr title="Martes"&gt;Mar&lt;/abbr&gt;&lt;/th&gt;
				...
			&lt;/tr&gt;
		&lt;/thead&gt;
		&lt;tbody id="tbody"&gt;
			&lt;tr&gt;
				&lt;td class="act"&gt;
					&lt;a title="Seleccione esta fecha" href="#"&gt;1&lt;/a&gt;
				&lt;/td&gt;
				&lt;td class="act"&gt;
					&lt;a title="Seleccione esta fecha" href="#"&gt;2&lt;/a&gt;
				&lt;/td&gt;
				...
			&lt;/tr&gt;
			&lt;tr&gt;
				...
				&lt;td class="inact"&gt;24&lt;/td&gt;
				&lt;td class="inact"&gt;25&lt;/td&gt;
				...
			&lt;/tr&gt;
		&lt;/tbody&gt;
	&lt;/table&gt;
	&lt;ul id="nav_mes"&gt;
		&lt;li&gt;
			&lt;a href="#"&gt;Diciembre&lt;/a&gt;
		&lt;/li&gt;
		&lt;li class="post"&gt;
			&lt;a href="#"&gt;Febrero&lt;/a&gt;
		&lt;/li&gt;
	&lt;/ul&gt;
	&lt;ul id="nav_year"&gt;
		&lt;li&gt;
			&lt;a href="#" title="Ir al año"&gt;2004&lt;/a&gt;
		&lt;/li&gt;
		&lt;li class="post"&gt;
			&lt;a href="#" title="Ir al año"&gt;2006&lt;/a&gt;
		&lt;/li&gt;
	&lt;/ul&gt;
	&lt;div id="close_it"&gt;
		&lt;a href="#"&gt;Cerrar calendario&lt;/a&gt;
	&lt;/div&gt;
&lt;/div&gt;</pre>
<h3>Conclusión</h3>
<p>A modo de cierre… ¿qué se podría decir de este calendario?…  pues que “<strong>es innecesario…   pero útil</strong>” y que “<strong>no tiene implicaciones negativas en términos de accesibilidad</strong>“.</p>
<p>…por cierto ¿qué día es hoy?</p>
            <a href="http://twitter.com/share" class="twitter-share-button" data-count="" data-text="Calendario accesible en javascript (innecesario pero útil)" data-via="" data-url="http://www.niquelao.net/accesibilidad/2007/02/11/acc_calendar-calendario-en-javascript-innecesario-pero-util/" >Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script>]]></content:encoded>
			<wfw:commentRss>http://www.niquelao.net/accesibilidad/2007/02/11/acc_calendar-calendario-en-javascript-innecesario-pero-util/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Y más formularios&#8230;  jarl!</title>
		<link>http://www.niquelao.net/accesibilidad/2007/01/02/y-mas-formularios-jarl/</link>
		<comments>http://www.niquelao.net/accesibilidad/2007/01/02/y-mas-formularios-jarl/#comments</comments>
		<pubDate>Tue, 02 Jan 2007 19:27:48 +0000</pubDate>
		<dc:creator>Rumoroso</dc:creator>
				<category><![CDATA[Accesibilidad]]></category>
		<category><![CDATA[Javascript]]></category>

		<guid isPermaLink="false">http://www.niquelao.net/accesibilidad/2007/01/02/y-mas-formularios-jarl/</guid>
		<description><![CDATA[Tras la ya extensa saga &#8220;Retocando Formularios&#8220;, muchos pensaron (bueno, presuponiendo tanto lo de &#8220;muchos&#8221; como su capacidad para pensar) que no volvería a tratar sobre ellos&#8230; ¡Pues va a ser que no! He vuelto para tratar de mejorarlo, pero &#8230; <a href="http://www.niquelao.net/accesibilidad/2007/01/02/y-mas-formularios-jarl/">Sigue leyendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Tras la ya extensa saga &#8220;<strong>Retocando Formularios</strong>&#8220;, muchos pensaron (bueno, presuponiendo tanto lo de &#8220;muchos&#8221; como su capacidad para pensar) que no volvería a tratar sobre ellos&#8230; <strong>¡Pues va a ser que no!</strong> He vuelto para tratar de mejorarlo, pero en esta ocasión desde el punto de vista de la accesibilidad.</p>
<p><span id="more-55"></span></p>
<p>A las funcionalidades que introducían los anteriores scripts le he añadido la capacidad de reconocer la agrupación de campos mediante el elemento <a href="http://www.w3.org/TR/1999/REC-html401-19991224/interact/forms.html#h-17.10" title="enlace externo" xml:lang="en" lang="en">fieldset</a>, y todo con la finalidad de mejorar la experiencia de usuario y la accesibilidad. Este elemento tiene como finalidad el agrupar campos en base al tipo de datos a introducir (ej. datos personales, datos bancarios, datos académicos, etc), mejorando la estructura y la accesibilidad del conjunto. Al fieldset se le añade el elemento <a href="http://www.w3.org/TR/1999/REC-html401-19991224/interact/forms.html#h-17.10" title="enlace externo" xml:lang="en" lang="en">legend</a> que funciona a modo de encabezado de los datos agrupados.</p>
<h3>&#8230;y ¿para qué?</h3>
<p>La idea me surgió tras ver horrorizado un inmenso formulario con multitud de campos obligatorios (y no voy a decir donde&#8230;). Cuando no se rellenan estos, la lista con los errores se vuelve <strong>larguíííííííííísima</strong>, con lo que resulta muy incomodo de leer, difícil de comprender e incluso estéticamente horrible.</p>
<p>Si los campos de formulario van agrupados para facilitar su comprensión, ¿por qué no agrupar los errores siguiendo el mismo patrón?</p>
<p>Para el funcionamiento del script no hace falta la agrupación, pero bueno&#8230;   siempre es positivo tenerla presente y utilizarla.</p>
<h3>La prueba</h3>
<p>Como siempre, podéis acceder al <a href="http://www.niquelao.net/wp-content/uploads/2007/1/formulario_IV/index.html">ejemplo de uso</a> o incluso <a href="http://www.niquelao.net/wp-content/uploads/2007/1/formulario_IV/formulario_IV.zip" title="archivo comprimido en formato zip">descargarlo directamente</a>.</p>
<p>Como se puede observar, los errores siguen mostrándose mediante una lista. No obstante, en este caso se crea una lista anidada para tratar de agruparlos y conseguir esa mejora en estructura antes mencionada.</p>
<h3>&#8230;y todo esto se relaciona con</h3>
<ul>
<li><a href="http://www.niquelao.net/javascript/2006/12/17/retocando-formularios-episodio-3-el-retorno/">Retocando Formularios, Episodio III (”El Retorno”)</a></li>
<li><a href="http://www.niquelao.net/javascript/2006/09/14/retocando-formularios-ii/">Retocando Formularios (Episodio II)</a></li>
<li><a href="http://www.niquelao.net/javascript/2006/09/05/retocando-formularios-i/">Retocando Formularios (episodio I)</a></li>
</ul>
<p><strong>Importante:</strong> Quiero recordar que el uso de javascript no debe tener implicaciones negativas en la accesibilidad. Bien utilizado, y con todas las consideraciones hacia el usuario, mejora su experiencia.</p>
            <a href="http://twitter.com/share" class="twitter-share-button" data-count="" data-text="Y más formularios&#8230;  jarl!" data-via="" data-url="http://www.niquelao.net/accesibilidad/2007/01/02/y-mas-formularios-jarl/" >Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script>]]></content:encoded>
			<wfw:commentRss>http://www.niquelao.net/accesibilidad/2007/01/02/y-mas-formularios-jarl/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

