<?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>Uninstallme &#187; Buenas ideas</title>
	<atom:link href="http://uninstallme.com/category/buenas-ideas/feed/" rel="self" type="application/rss+xml" />
	<link>http://uninstallme.com</link>
	<description>Desarrollo front-end, estándares web, accesibilidad y más</description>
	<lastBuildDate>Sun, 05 Sep 2010 23:20:49 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Uso útil de pseudoprotocolos en enlaces javascript</title>
		<link>http://uninstallme.com/uso-util-de-pseudoprotocolos-en-enlaces-javascript/</link>
		<comments>http://uninstallme.com/uso-util-de-pseudoprotocolos-en-enlaces-javascript/#comments</comments>
		<pubDate>Sun, 16 May 2010 10:53:38 +0000</pubDate>
		<dc:creator>kcmr</dc:creator>
				<category><![CDATA[Accesibilidad]]></category>
		<category><![CDATA[Buenas ideas]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Usabilidad]]></category>

		<guid isPermaLink="false">http://uninstallme.com/?p=797</guid>
		<description><![CDATA[El uso del pseudoprotocolo (href="javascript:nombreFuncion();") en enlaces es una mala práctica de acuerdo con las normas del Javascript no intrusivo. Los enlaces deben tener una url válida que funcione sin Javascript. Por ejemplo, un enlace que abre una popup debe tener una url en su atributo href, de manera que sin Javascript siga siendo un [...]]]></description>
			<content:encoded><![CDATA[<p>El uso del pseudoprotocolo (<code>href="<strong>javascript:</strong>nombreFuncion();"</code>) en enlaces es una mala práctica de acuerdo con las normas del Javascript no intrusivo. Los enlaces deben tener una url válida que funcione sin Javascript. Por ejemplo, un enlace que abre una popup debe tener una url en su atributo href, de manera que sin Javascript siga siendo un enlace válido.</p>
<p>Pero no todos los enlaces que ejecutan alguna función Javascript tienen que tener una url en su atributo href. Algunos sirven para realizar acciones dentro de la propia página, como puede ser mostrar / ocultar una capa, pasar a la imagen siguiente en un carrusel, etc.</p>
<p>En estos casos, lo correcto es crear esos enlaces con Javascript, ya que sólo con Javascript habilitado tienen sentido (no deben estar previamente en el código HTML), y asignarles como atributo href una almohadilla (#) o dejarlo vacío.</p>
<p>En algún blog que no consigo encontrar proponían usar para este tipo de enlaces el pseudoprotocolo <code>javascript:</code> u otro que consideremos más apropiado (inventado), como podría ser <code>imagen:</code>.</p>
<p>De esta forma, estos enlaces <strong>proporcionan información acerca de su función al hacer rollover sobre ellos o cuando tienen el foco</strong>. Esta información suele aparecer en la barra de estado del navegador. También es útil para usuarios de lectores de pantalla que puedan tenerlos configurados para no leer el atributo title.</p>
<div id="attachment_798" class="wp-caption aligncenter" style="width: 520px"><img class="size-full wp-image-798" src="http://uninstallme.com/wp/wp-content/barra-estado.png" alt="Atributo href del enlace mostrado en la barra de estado de Firefox" width="510" height="106" /><p class="wp-caption-text">Atributo href del enlace mostrado en la barra de estado de Firefox</p></div>
<p>Habrá quien se preguntará si es correcto asignar este tipo de funciones a enlaces en lugar de a otros elementos HTML. La respuesta es que sí, ya que los enlaces pueden tener de forma natural el foco y ser activados cuando se utiliza el teclado para navegar y moverse por la página.</p>
]]></content:encoded>
			<wfw:commentRss>http://uninstallme.com/uso-util-de-pseudoprotocolos-en-enlaces-javascript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Detectar suavizado de fuentes con javascript</title>
		<link>http://uninstallme.com/detectar-suavizado-de-fuentes-con-javascript/</link>
		<comments>http://uninstallme.com/detectar-suavizado-de-fuentes-con-javascript/#comments</comments>
		<pubDate>Sun, 06 Dec 2009 20:54:36 +0000</pubDate>
		<dc:creator>kcmr</dc:creator>
				<category><![CDATA[Buenas ideas]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[@font-face]]></category>
		<category><![CDATA[fuentes]]></category>
		<category><![CDATA[ie]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://uninstallme.com/?p=750</guid>
		<description><![CDATA[En User Agent Man han publicado un script para detectar el suavizado de fuentes en el navegador. Si el suavizado de fuentes está activado, se añade una clase al elemento html que permite usar unas u otras fuentes en la CSS dependiendo de esta característica. Este script es especialmente útil para utilizar fuentes embebidas mediante [...]]]></description>
			<content:encoded><![CDATA[<p>En User Agent Man han publicado un <a href="http://www.useragentman.com/blog/2009/11/29/how-to-detect-font-smoothing-using-javascript/">script para detectar el suavizado de fuentes en el navegador</a>. Si el suavizado de fuentes está activado, se añade una clase al elemento html que permite usar unas u otras fuentes en la CSS dependiendo de esta característica.</p>
<p>Este script es especialmente útil para utilizar fuentes embebidas mediante @font-face, ya que la calidad del resultado depende muchísimo de si el suavizado de fuentes está o no habilitado en el SO del usuario. También es útil a la hora de decantarse por unas u otras fuentes de sistema, como por ejemplo, la Lucida Sans Unicode, que sin suavizado resulta de mala legibilidad en Windows.</p>
<h3>Información relacionada (@font-face)</h3>
<dl>
<dt><a href="http://paulirish.com/2009/bulletproof-font-face-implementation-syntax/">Bulletproof @font-face syntax</a></dt>
<dd>La mejor forma de utilizar @font-face.<br />
Existe una <a href="http://www.cssblog.es/sintaxis-de-font-face/">traducción al español en CSSBlog</a></dd>
<dt><a href="http://www.fontsquirrel.com/fontface">Font Squirrel</a></dt>
<dd>Kits de fuentes para usar mediante @font-face</dd>
<dt><a href="http://www.fontsquirrel.com/fontface/generator">@font-face generator</a></dt>
<dd>Nos permite subir una fuente y descargar el paquete completo para usar mediante @font-face</dd>
<dt><a href="http://www.kirsle.net/wizards/ttf2eot.cgi">TTF to EOT Font Converter</a></dt>
<dd>Para convertir fuentes TrueType a OpenType (EOT), el formato usado por Internet Explorer</dd>
</dl>
]]></content:encoded>
			<wfw:commentRss>http://uninstallme.com/detectar-suavizado-de-fuentes-con-javascript/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Suavizado de imágenes redimensionadas con CSS en Internet Explorer</title>
		<link>http://uninstallme.com/suavizado-de-imagenes-redimensionadas-con-css-en-internet-explorer/</link>
		<comments>http://uninstallme.com/suavizado-de-imagenes-redimensionadas-con-css-en-internet-explorer/#comments</comments>
		<pubDate>Wed, 04 Nov 2009 23:51:58 +0000</pubDate>
		<dc:creator>kcmr</dc:creator>
				<category><![CDATA[Buenas ideas]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Navegadores]]></category>
		<category><![CDATA[ie]]></category>
		<category><![CDATA[IE 6]]></category>
		<category><![CDATA[int]]></category>
		<category><![CDATA[internet explorer]]></category>

		<guid isPermaLink="false">http://uninstallme.com/?p=734</guid>
		<description><![CDATA[Cuando forzamos el tamaño de una imagen mediante CSS reduciendo su ancho o alto original, nos encontramos con que Internet Explorer hace cosas feas. A falta de palabras para describirlo, nada mejor que una captura: En el blog de ZURB, que por cierto, me encanta, nos muestran un pequeño truco para suavizar las imágenes en [...]]]></description>
			<content:encoded><![CDATA[<p>Cuando forzamos el tamaño de una imagen mediante CSS reduciendo su ancho o alto original, nos encontramos con que Internet Explorer hace cosas feas. A falta de palabras para describirlo, nada mejor que una captura:</p>
<div id="attachment_736" class="wp-caption aligncenter" style="width: 285px"><img class="size-full wp-image-736" src="http://uninstallme.com/wp/wp-content/captura-suavizado.gif" alt="Captura de imágenes redimensionadas en Explorer 7" width="275" height="244" /><p class="wp-caption-text">Imágenes redimensionadas en Explorer 7</p></div>
<p>En el <a href="http://www.zurb.com/blog">blog de ZURB</a>, que por cierto, me encanta, nos muestran un pequeño truco para <strong>suavizar las imágenes en Internet Explorer</strong> entre otras <a href="http://www.zurb.com/article/173/3-ways-to-make-your-site-look-better-in-m">técnicas para mejorar la presentación visual en varios navegadores</a></p>
<pre><code>
img{-ms-interpolation-mode: bicubic;}
</code></pre>
<p>Este método no funciona en Internet Explorer 6, para el que proponen usar algo un poco más sucio que lo anterior:</p>
<pre><code>
filter:progid:DXImageTransform.Microsoft.AlphaImageLoader (src='/path/to/image.jpg', sizingMethod='scale');
</code></pre>
<p>Afortunadamente, Internet Explorer 8 no tiene este problema.</p>
<p><a href="http://uninstallme.com/ejemplos/suavizado-imagenes-explorer"><strong>Demo suavizado de imágenes (sólo para IE 7)</strong></a></p>
<p><strong>Actualización: script para aplicar el filtro a las imágenes redimensionadas</strong></p>
<p>En <a href="http://uninstallme.com/suavizado-de-imagenes-redimensionadas-con-css-en-internet-explorer/comment-page-1/#comment-331">este comentario</a> proponen el uso de un pequeño <strong>script en jQuery para detectar si una imagen está redimensionada</strong> y en ese caso aplicarle el estilo correspondiente para IE 7 y el filtro para IE 6. De esta forma evitamos tener código no válido en la CSS y aplicamos estos estilos sólo a las imágenes que lo requieran. Ya que el código no aparece muy bien formateado en los comentarios, lo pego aquí.</p>
<p>Gracias por la aportación!</p>
<pre class="brush:javascript">
jQuery.each($('img'), function() {
   ancho_forzado = $(this).width();

   img = new Image();
   img.src = $(this).attr('src');
   ancho_real = img.width;

   if (ancho_forzado != ancho_real) {
      if ($.browser.version.substr(0,1) == '7') {
         this.style.msInterpolationMode = "bicubic";
      } else if ($.browser.version.substr(0,1) == '6') {
         $(this).attr('width', ancho_forzado);
         this.runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + img.src + "', sizingMethod='scale')",
         this.runtimeStyle.paddingTop = this.height,
         this.runtimeStyle.height = 0;
      }
   }
});
</pre>
]]></content:encoded>
			<wfw:commentRss>http://uninstallme.com/suavizado-de-imagenes-redimensionadas-con-css-en-internet-explorer/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Max-width para Internet Explorer 6 sólo con CSS</title>
		<link>http://uninstallme.com/max-width-para-internet-explorer-6-solo-con-css/</link>
		<comments>http://uninstallme.com/max-width-para-internet-explorer-6-solo-con-css/#comments</comments>
		<pubDate>Wed, 21 Oct 2009 20:22:00 +0000</pubDate>
		<dc:creator>kcmr</dc:creator>
				<category><![CDATA[Buenas ideas]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[IE 6]]></category>

		<guid isPermaLink="false">http://uninstallme.com/?p=724</guid>
		<description><![CDATA[En CSSPlay han publicado un método basado sólo en CSS válido, para emular el funcionamiento de la propiedad max-width de CSS en Internet Explorer 6. Esta propiedad es útil para fijar un ancho máximo de página (bloque contenedor) en diseños fluidos, evitando que los bloques de texto sean demasiado largos y dificulten su lectura. La [...]]]></description>
			<content:encoded><![CDATA[<p>En <a href="http://www.cssplay.co.uk">CSSPlay</a> han publicado un método basado sólo en <strong>CSS válido</strong>, para emular el funcionamiento de la <a href="http://www.cssplay.co.uk/boxes/maxwidth.html">propiedad max-width de CSS en Internet Explorer 6</a>.</p>
<p>Esta propiedad es útil para fijar un ancho máximo de página (bloque contenedor) en diseños fluidos, evitando que los bloques de texto sean demasiado largos y dificulten su lectura.</p>
<p>La solución quizá llega un poco tarde ahora que, ¡por fin!, el porcentaje de uso de IE 6 es menor que el de sus hermanos mayores, IE 7 y 8, y poco a poco vamos dejando de dar soporte (teniendo siempre en cuenta aquello de la degradación elegante) a este navegador.</p>
<p>La técnica varía según la alineación de página que se use. Para un contenedor centrado de 960 pixeles de ancho máximo, el código HTML y CSS a usar sería similar a este:</p>
<p><strong>HTML</strong></p>
<pre class="brush:html">&lt;div class="leftpad"&gt;&lt;/div&gt;
&lt;div class="rightpad"&gt;&lt;/div&gt;
&lt;div id="contenedor"&gt;
... bla bla bla ...
&lt;/div&gt;</pre>
<p><strong>CSS</strong></p>
<pre class="brush:css">.leftpad{
width: 50%; float: left;
margin-right: -480px; height: 1px;
}
.rightpad{
width: 50%; float: right;
margin-left: -480px; height: 1px;
}
#contenedor{overflow: hidden;}
* html #contenedor{float: left;}</pre>
<ul>
<li>El alto de los bloques con el margen negativo debe ser una unidad. No funciona un porcentaje o el valor auto.</li>
<li>El margen negativo es igual a la mitad del ancho máximo del bloque contenedor, que no se declara en ningún otro sitio.</li>
</ul>
<p>Existen otras soluciones para conseguir un ancho máximo en IE 6, <a title="Ancho máximo y mínimo para IE 6 con Javascript" href="http://www.doxdesk.com/software/js/minmax.html">basadas en Javascript</a> o en el uso de <a href="http://www.google.es/search?hl=es&amp;q=expression%28document.body.clientWidth">expresiones propietarias de Microsoft</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://uninstallme.com/max-width-para-internet-explorer-6-solo-con-css/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Un bookmarklet para superar el CSS Naked day</title>
		<link>http://uninstallme.com/un-bookmarklet-para-superar-el-css-naked-day/</link>
		<comments>http://uninstallme.com/un-bookmarklet-para-superar-el-css-naked-day/#comments</comments>
		<pubDate>Thu, 09 Apr 2009 11:50:26 +0000</pubDate>
		<dc:creator>kcmr</dc:creator>
				<category><![CDATA[Accesibilidad]]></category>
		<category><![CDATA[Buenas ideas]]></category>
		<category><![CDATA[Utilidades]]></category>
		<category><![CDATA[bookmarklets]]></category>
		<category><![CDATA[legibilidad]]></category>
		<category><![CDATA[tipografía]]></category>
		<category><![CDATA[Usabilidad]]></category>

		<guid isPermaLink="false">http://uninstallme.com/?p=603</guid>
		<description><![CDATA[Yo también me he sumado a esta iniciativa de dejar la web en pelotas, que pretende promover el correcto uso de Estándares Web y marcado semántico. Es el CSS Naked Day. Me tengo que decir eso de &#8220;bueno, un día es un día&#8221; para tener la conciencia más tranquila, ya que aunque todo permanece perfectamente [...]]]></description>
			<content:encoded><![CDATA[<p>Yo también me he sumado a esta iniciativa de dejar la web en pelotas, que pretende promover el correcto uso de Estándares Web y marcado semántico. Es el <a href="http://naked.dustindiaz.com/">CSS Naked Day</a>.</p>
<p>Me tengo que decir eso de &#8220;bueno, un día es un día&#8221; para tener la conciencia más tranquila, ya que aunque todo permanece perfectamente utilizable y comprensible sin estilos, la verdad sea dicha&#8230; resulta bastante incómodo de leer.</p>
<p>Una buena forma de superarlo, sobretodo cuando tenemos verdadero interés en leer algo, cosa que debe de ocurrir sólo durante un 5% del tiempo en que navegamos, es utilizar un bookmarket que aplica los estilos necesarios para mejorar la legibilidad a la parte de la página que contiene el contenido relevante, ocultando todos los demás elementos que pueden distraer la lectura, como banners, menús de navegación, etc. Se trata de <a href="http://lab.arc90.com/experiments/readability/es/">Readability</a>. En su web podemos elegir el estilo que más nos gusta entre varias opciones y una vez configurado, añadir el marcador al navegador.</p>
<p>Es un bookmarklet bastante útil y cómodo, no sólo para superar el día de hoy, sino para cuando nos encontramos con un tamaño de texto diminuto o longitud excesiva de líneas, dos cosas que dificultan y hacen poco apetecible la lectura.</p>
]]></content:encoded>
			<wfw:commentRss>http://uninstallme.com/un-bookmarklet-para-superar-el-css-naked-day/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Flash navegable mediante teclado en Firefox</title>
		<link>http://uninstallme.com/flash-navegable-mediante-teclado-en-firefox/</link>
		<comments>http://uninstallme.com/flash-navegable-mediante-teclado-en-firefox/#comments</comments>
		<pubDate>Mon, 02 Mar 2009 23:14:36 +0000</pubDate>
		<dc:creator>kcmr</dc:creator>
				<category><![CDATA[Accesibilidad]]></category>
		<category><![CDATA[Buenas ideas]]></category>
		<category><![CDATA[Navegadores]]></category>
		<category><![CDATA[flash]]></category>

		<guid isPermaLink="false">http://uninstallme.com/?p=562</guid>
		<description><![CDATA[Sí Flash ya es de por sí bastante problemático en cuanto a accesibilidad se refiere, en Firefox tiene una dificultad añadida: no se puede acceder a su contenido mediante teclado. Para navegar por los elementos de un flash en Firefox necesitamos clicar el flash. Una vez que hemos entrado ya no podemos salir usando el [...]]]></description>
			<content:encoded><![CDATA[<p>Sí Flash ya es de por sí bastante problemático en cuanto a accesibilidad se refiere, en Firefox tiene una dificultad añadida: no se puede acceder a su contenido mediante teclado. Para navegar por los elementos de un flash en Firefox necesitamos clicar el flash. Una vez que hemos entrado ya no podemos salir usando el teclado, la tabulación queda atrapada en el flash. La buena noticia es que si hemos podido entrar en el flash, se supone que sólo hemos podido hacerlo mediante ratón, por lo que también se supone que también podremos salir del flash usando el ratón, a no ser que justamente decida fallar en ese preciso momento. En cualquier caso, <strong>este comportamiento de Flash en Firefox hace que sea dependiente de dispositivo</strong>.</p>
<p>No ocurre lo mismo en Internet Explorer, en el que sí podemos entrar y salir del Flash mediante teclado. Podemos imitar el comportamiento de Flash en Internet Explorer mediante Javascript y Actionscript. En el siguiente <a href="http://uninstallme.com/ejemplos/flash-navegable-firefox/flash-navegable-firefox.html">ejemplo</a> tenemos un flash al que podemos acceder mediante teclado en Firefox, navegar por sus elementos y salir de él.</p>
<p>Para conseguir esto se han seguido los siguientes pasos:</p>
<ol>
<li><strong>Dar un tabindex con valor 0 al object que contiene el flash.</strong>De esta manera conseguimos que pueda tener el foco en Firefox. El valor 0 permite que el objeto permanezca en el orden de tabulación en que aparece en la página, es decir, no se altera el orden de navegación de otros elementos. Debemos hacerlo mediante Javascript, porque sin él, podríamos entrar mediante teclado al flash pero no podríamos salir.</li>
<li><strong>Permitir la comunicación del Flash con Javascript.</strong>Para esto usamos el parámetro allowscriptaccess de Flash
<pre><code class="html">
&lt;param name="allowScriptAccess" value="always" /&gt;
</code></pre>
</li>
<li><strong>Desde Flash llamamos a la función Javascript encargada de establecer el tabindex</strong>, de esta manera, sólo si hay flash se establecerá un tabindex para el object.</li>
<li><strong>Añadimos para el primer y último elemento navegables del flash una función para el evento onblur</strong> (en actionscript llamado onKillFocus) encargada de llamar a la función Javascript que desenfoca el object.
<pre><code class="javascript">
// primer elemento navegable
bot_1.onKillFocus = function(newFocus){
   if(newFocus == bot_3){
      ExternalInterface.call('AccesibleFlash.desenfocaObject', 'test');
   }
}
// último elemento navegable
bot_3.onKillFocus = function(newFocus){
   if(newFocus != bot_2){
      ExternalInterface.call('AccesibleFlash.desenfocaObject', 'test');
   }
}
</code></pre>
</li>
<li>Por último, para evitar el &#8220;click para activar&#8221; en Explorer, se ha usado el <a href="http://code.google.com/p/swfobject/wiki/documentation">método de publicación dinámica del SWFObject</a>.</li>
</ol>
<p><a href="http://uninstallme.com/ejemplos/flash-navegable-firefox/flash-navegable-firefox_20090302.zip"><strong>Descargar todos los archivos del ejemplo</strong>, incluido el .fla, en formato .zip</a></p>
<p>Una buena parte del &#8220;cómo conseguirlo&#8221; surgió de una cabeza inquieta de mi antiguo curro y creo, que hasta aquí puedo y debo leer.</p>
]]></content:encoded>
			<wfw:commentRss>http://uninstallme.com/flash-navegable-mediante-teclado-en-firefox/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Ocultación de elementos con la carga del DOM sin usar librerías</title>
		<link>http://uninstallme.com/ocultacion-de-elementos-con-la-carga-del-dom-sin-usar-librerias/</link>
		<comments>http://uninstallme.com/ocultacion-de-elementos-con-la-carga-del-dom-sin-usar-librerias/#comments</comments>
		<pubDate>Sun, 11 Jan 2009 14:28:36 +0000</pubDate>
		<dc:creator>kcmr</dc:creator>
				<category><![CDATA[Accesibilidad]]></category>
		<category><![CDATA[Buenas ideas]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[DOM]]></category>

		<guid isPermaLink="false">http://uninstallme.com/?p=514</guid>
		<description><![CDATA[Como ya he comentado más de una vez por aquí, cuando necesitamos ocultar un elemento HTML para mostrarlo u ocultarlo mediante Javascript (un menú desplegable, una capa colapsable, etc), no debemos ocultarlo previamente en el HTML, ya que ese elemento deberá permanecer visible cuando no haya Javascript. Para ello se pueden utilizar varias técnicas como [...]]]></description>
			<content:encoded><![CDATA[<p>Como ya he comentado más de una vez por aquí, cuando necesitamos ocultar un elemento HTML para mostrarlo u ocultarlo mediante Javascript (un menú desplegable, una capa colapsable, etc), no debemos ocultarlo previamente en el HTML, ya que ese elemento deberá permanecer visible cuando no haya Javascript.</p>
<p>Para ello se pueden utilizar varias técnicas como ocultar estos elementos mediante Javascript añadiendo el estilo display: none, (sí, en la mayoría de casos no será incorrecto que el elemento oculto también lo esté para lectores de pantalla), o bien añadiendo una clase &#8220;oculto&#8221;, &#8220;hidden&#8221; o similar definida en la CSS que se encargue de ocultar elementos.</p>
<p>El problema de esta técnica es que cuando no podemos usar alguno de los métodos que nos ofrecen las librerías Javascript para ejecutar funciones cuando el DOM está disponible (ready de jQuery, domready de Mootools o dom:loaded de Prototype), nos encontramos con el feo efecto de que nuestros elementos ocultos aparecen un instante visibles hasta que toda la página está cargada (onload).</p>
<p>Para evitar esto se suelen utilizar otras técnicas no muy limpias de la vieja escuela, como colocar el código Javascript en el HTML, o lo que es peor, usar estilos en línea en la capa o elemento que se ha de ocultar.</p>
<p>Pues bien, gracias a Scriptia, descubro este otro <a href="http://blog.scriptia.net/articulos/2006/11/ocultar-elementos-por-css-si-y-solo-si-disponemos-de-javascript.html">método para ocultar elementos</a> que se basa en añadir una clase al elemento HTML mediante la propiedad documentElement del objeto document. Y cito lo que nos comenta Choan sobre document.documentElement:</p>
<blockquote cite="http://blog.scriptia.net/articulos/2006/11/ocultar-elementos-por-css-si-y-solo-si-disponemos-de-javascript.html">
<ol>
<li>Para modificar &#8216;document.documentElement&#8217; <strong>no es necesario esperar a que se complete la carga del documento</strong>.</li>
<li>La especificación HTML 4.01 no permite el uso del atributo &#8216;class&#8217; en el elemento &#8216;html&#8217;. En mi opinión, como la jugada la hacemos por scripting, esto no invalida el documento.</li>
</ol>
</blockquote>
<p>Para utilizarlo nos propone usar una variable en la que detectamos el soporte del DOM por el navegador:</p>
<pre><code class="javascript">
var isSupported = document.getElementById &amp;&amp; document.getElementsByTagName;
</code></pre>
<p>Y una sencilla instrucción:</p>
<pre><code class="javascript">
if (isSupported) {
    document.documentElement.className = "js";
}
</code></pre>
<p>Por último, para evitar tener rondando por ahí una variable global, podemos colocarlo todo dentro de una <a href="http://dizque.lacalabaza.net/sotanos/2006/05/funciones-anonimas-y-autoejecutables-en-javascript/">función anónima autoejecutable</a>, o lo que también se conoce como closure, si no estoy equivocada:</p>
<pre><code class="javascript">
(function(){
    var isSupported = document.getElementById &amp;&amp; document.getElementsByTagName;
    if(isSupported){
        document.documentElement.className = "js";
    }
})();
</code></pre>
<p>En la CSS aplicaríamos el display none sólo a los elementos hijos de los que tienen la clase &#8220;js&#8221;:</p>
<pre><code class="css">
.js .oculto{ display: none; }
</code></pre>
<p>He probado esta técnica en una página en la que he usado 4 imágenes pesadas, para comprobar que la capa que se oculta mediante Javascript, efectivamente lo hace sin necesidad de que la página esté cargada y ¡funciona!</p>
<p><a href="http://uninstallme.com/ejemplos/ocultacion-elementos/"><strong>Demo</strong> ocultación de elementos mediante javascript</a>.</p>
<p>Por si alguien se pregunta quién va por el mundo con Javascript deshabilitado, no hace falta irse a buscar al usuario de <a href="http://es.wikipedia.org/wiki/Lynx_(navegador)">Lynx</a> o a ese otro que por alguna extraña razón decide rebuscar la opción de deshabilitar Javascript en su navegador aunque no sepa lo que es ni le importe. El individuo que va por ahí sin Javascript existe y puede ser perfectamente un usuario avanzado que usa un lector de feeds, un móvil con soporte limitado de Javascript, o ve una web desde su cliente de correo.</p>
]]></content:encoded>
			<wfw:commentRss>http://uninstallme.com/ocultacion-de-elementos-con-la-carga-del-dom-sin-usar-librerias/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Descubriendo los c&#243;digos QR y sus posibilidades</title>
		<link>http://uninstallme.com/descubriendo-los-cdigos-qr-y-sus-posibilidades/</link>
		<comments>http://uninstallme.com/descubriendo-los-cdigos-qr-y-sus-posibilidades/#comments</comments>
		<pubDate>Sat, 03 Jan 2009 15:38:47 +0000</pubDate>
		<dc:creator>kcmr</dc:creator>
				<category><![CDATA[Accesibilidad]]></category>
		<category><![CDATA[Buenas ideas]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[QR-Code]]></category>
		<category><![CDATA[tecnología]]></category>
		<category><![CDATA[web móvil]]></category>

		<guid isPermaLink="false">http://uninstallme.com/descubriendo-los-cdigos-qr-y-sus-posibilidades/</guid>
		<description><![CDATA[Hace cosa de un mes descubría esto de los códigos QR. Me he sentido algo aliviada al leer este post en el blog de QR Code, ya que parece que en España nos lo estamos tomando con cierta calma y no soy la última en enterarme Los códigos QR pueden contener un máximo de 256 [...]]]></description>
			<content:encoded><![CDATA[<p>Hace cosa de un mes descubría esto de los códigos QR. Me he sentido algo aliviada al leer este <a title="Uso de los códigos QR en España" href="http://qrcode.es/?p=311&amp;language=es">post en el blog de QR Code</a>, ya que parece que en España nos lo estamos tomando con cierta calma y no soy la última en enterarme <img src='http://uninstallme.com/wp/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
<p>Los códigos QR pueden contener un máximo de 256 caracteres alfanuméricos. Esta información puede ser leída y decodificada por un teléfono móvil con cámara y un programa para leer estos códigos mediante una fotografía. Esto permite acceder directamente a una URL o copiar los datos de un contacto en la agenda sin tener que introducirlos manualmente.</p>
<p>Puedes descargar un programa para leer códigos QR compatible con tu terminal en <a href="http://reader.kaywa.com">Kaywa Reader</a>. La web de Kaywa también ofrece un <a href="http://qrcode.kaywa.com/">generador de códigos QR</a>.</p>
<p>Código QR de Uninstallme.</p>
<p><img class="aligncenter size-full" src="http://uninstallme.com/wp/wp-content/img.png" alt="Código QR de Uninstallme" width="155" height="155" /></p>
<p>En Japón, el uso de estos códigos ya está muy extendido, y no sólo es frecuente encontrarlos en cualquier cartel publicitario por la calle, sino que llegan al extremo de <a href="http://www.fayerwayer.com/2008/05/lapidas-japonesas-con-codigo-qr/">usarlos en lápidas</a> para proporcionar la URL de una web con datos sobre el difunto, fotos, etc.</p>
<p>Aunque, como comentaba anteriormente, en España su uso no está tan extendido, ya hay quien ha visto las posibilidades de esta tecnología para <strong>ofrecer mejoras de accesibilidad a personas invidentes o con visión reducida</strong>.</p>
<h3>Accesibilidad en edificios</h3>
<p>Me ha llamado la atención la iniciativa del CRE de San Andrés del Rabanedo (León), de colocar estos <strong>códigos QR en las puertas del edificio</strong> con la información que normalmente suele aparecer en un cartel expresada mediante texto o símbolos. (Ejemplo: aseos de señoras.)</p>
<p><img class="aligncenter size-full" src="http://uninstallme.com/wp/wp-content/qredificios.jpg" alt="qr-edificios" width="240" height="211" /></p>
<p>En <a title="QR-Code para facilitar la accesibilidad de los edificios en YouTube" href="http://es.youtube.com/watch?v=FDT7vNpYsYY">este vídeo</a> se explica cómo una persona invidente puede escuchar la información de estos códigos usando un teléfono móvil equipado con un lector de pantalla.</p>
<h3>Tarjetas de visita accesibles</h3>
<p><img class="aligncenter size-full" src="http://uninstallme.com/wp/wp-content/movil.jpg" alt="" width="208" height="125" /></p>
<p><a href="http://www.tarjetasaccesibles.com/">Estas tarjetas</a> incluyen el código QR con los detalles del contacto, de manera que con hacer una foto a la tarjeta, ya tenemos registrados todos los detalles de contacto en la agenda del móvil sin escribir una sola letra y, de paso, <strong>evitando posibles errores tipográficos</strong>. Más cómodo imposible.</p>
<h3>Otros usos</h3>
<p>Idealista.com ofrece un <a href="http://www.idealista.com/labs/cartel-anuncio-piso.htm">servicio de generación de fichas para imprimir</a> y pegar en farolas, cristales, etc. Estas fichas llevan un código QR con una URL en la que se proporcionan fotos y otros datos sobre el inmueble en alquiler o venta.</p>
<p>En la <a href="http://qr-code.spreadshirt.net/es/ES/Shop/Index/index">tienda on line de QR-Code</a>, se pueden encontrar camisetas, bolsos o tazas con todo tipo de <strong>mensajes graciosos para descifrar</strong>.</p>
<p>A mí se me ocurren ahora mismo usos relacionados con la <strong>geolocalización</strong> (<a href="http://zxing.appspot.com/generator/">ZXing ya está incorporando esta característica en su generador de códigos</a>.) Por ejemplo, aprovechando que muchos móviles de última generación suelen incorporar GPS, estos códigos podrían conducirnos directamente hasta un determinado restaurante o, colocados en los típicos carteles de información (“Usted está aquí”), conectarnos con un servicio que nos diga qué tenemos a nuestro alrededor en una ciudad desconocida.</p>
<h3>Fuentes y más información</h3>
<ul>
<li><a href="http://es.wikipedia.org/wiki/C%C3%B3digo_QR">Código QR en la Wikipedia</a></li>
<li><a href="http://www.i-nigma.com/personal/Create.asp">Generador de códigos QR para uso personal</a> (detalles de contacto, links, mensajes)</li>
<li><a href="http://qrcode.es/Index.php/?language=es">Blog sobre QR en español</a> Su generador de códigos permite generarlos en color o en formato PDF.</li>
<li><a href="https://addons.mozilla.org/es-ES/firefox/addon/2780">Extensión para Firefox para generar códigos QR a partir de URL’s o selecciones de texto</a></li>
<li><a href="http://www.juliangallo.com.ar/2007/04/lo-codigos-qr-conectan-a-todas-las-cosas/">Los códigos QR conectan a todas las cosas</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://uninstallme.com/descubriendo-los-cdigos-qr-y-sus-posibilidades/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Otra forma de utilizar la compresión Gzip en archivos Javascript y CSS</title>
		<link>http://uninstallme.com/otra-forma-de-utilizar-la-compresion-gzip-en-archivos-javascript-y-css/</link>
		<comments>http://uninstallme.com/otra-forma-de-utilizar-la-compresion-gzip-en-archivos-javascript-y-css/#comments</comments>
		<pubDate>Tue, 25 Nov 2008 19:47:34 +0000</pubDate>
		<dc:creator>kcmr</dc:creator>
				<category><![CDATA[Buenas ideas]]></category>
		<category><![CDATA[htaccess]]></category>
		<category><![CDATA[gzip]]></category>
		<category><![CDATA[How to]]></category>

		<guid isPermaLink="false">http://uninstallme.com/?p=400</guid>
		<description><![CDATA[En 61924 (sí, este parece ser el nombre del sitio) he descubierto un pequeño truco realmente sencillo, para utilizar la compresión Gzip en archivos Javascript y CSS sin utilizar PHP. Para ello necesitamos, además de un servidor Apache, un compresor de archivos capaz de comprimir en formato Gzip, como 7zip, y añadir unas líneas en [...]]]></description>
			<content:encoded><![CDATA[<p>En 61924 (sí, este parece ser el nombre del sitio) he descubierto un pequeño truco realmente sencillo, para utilizar la <a href="http://61924.wepwnyou.net/blog/2008/10/04/gzipping-css-and-javascript-files.html">compresión Gzip en archivos Javascript y CSS sin utilizar PHP</a>.</p>
<p>Para ello necesitamos, además de un servidor Apache, un compresor de archivos capaz de comprimir en formato Gzip, como <a href="http://www.7-zip.org/">7zip</a>, y añadir unas líneas en el .htaccess mediante las que indicamos que los archivos con la extensión indicada, utilizan este tipo de compresión.</p>
<p>Simplemente comprimimos el archivo que deseemos en formato .gzip y le damos como nombre de extensión de archivo .jgz en el caso de Javascript o .cgz en el caso de CSS.</p>
<p>Enlazamos al nuevo archivo en el HTML y añadimos estas líneas en el .htaccess</p>
<pre><code>
# Compressed javascript files
AddEncoding x-gzip .jgz
AddType application/x-javascript .jgz

# Compressed css files
AddEncoding x-gzip .cgz
AddType text/css .cgz
</code></pre>
<p>He hecho la prueba con esta web comprimiendo <a href="http://mootools.net/">Mootools</a> y estos son los resultados.</p>
<p><strong>Antes de comprimir (63 Kb)</strong></p>
<p><img class="alignnone size-full wp-image-401" src="http://uninstallme.com/wp/wp-content/antes-comprimir.gif" alt="Captura de Firebug mostrando el tamaño de archivo antes de la compresión" width="574" height="53" /></p>
<p><strong>Y después de comprimir (19 Kb)</strong></p>
<p><img class="alignnone size-full wp-image-402" src="http://uninstallme.com/wp/wp-content/despues-comprimir.gif" alt="Captura de Firebug mostrando el tamaño de archivo después de la compresión" width="574" height="53" /></p>
<p>Una técnica que merece la pena tener en cuenta si estás usando librerías Javascript pesadas.</p>
]]></content:encoded>
			<wfw:commentRss>http://uninstallme.com/otra-forma-de-utilizar-la-compresion-gzip-en-archivos-javascript-y-css/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Rollover de imágenes en HTML (elemento IMG) sin Javascript</title>
		<link>http://uninstallme.com/rollover-de-imagenes-en-html-elemento-img-sin-javascript/</link>
		<comments>http://uninstallme.com/rollover-de-imagenes-en-html-elemento-img-sin-javascript/#comments</comments>
		<pubDate>Wed, 19 Nov 2008 02:01:52 +0000</pubDate>
		<dc:creator>kcmr</dc:creator>
				<category><![CDATA[Buenas ideas]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[Google Chrome]]></category>
		<category><![CDATA[How to]]></category>
		<category><![CDATA[internet explorer]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Navegadores]]></category>

		<guid isPermaLink="false">http://uninstallme.com/?p=375</guid>
		<description><![CDATA[Los rollovers de imágenes con javascript casi han pasado a la historia desde que podemos hacerlo de manera mucho más fácil y limpia con CSS, pero para los casos en los que, por la razón que sea, sea necesario que la imagen del rollover esté como elemento &#60;img&#62; en el código HTML, podemos conseguirlo utilizando [...]]]></description>
			<content:encoded><![CDATA[<p>Los rollovers de imágenes con javascript casi han pasado a la historia desde que podemos hacerlo de manera mucho más fácil y limpia con CSS, pero para los casos en los que, <a title="Problemas de los iconos como enlaces" href="http://uninstallme.com/iconos-como-enlaces-problemas-y-soluciones/">por la razón que sea</a>, sea necesario que la imagen del rollover esté como elemento &lt;img&gt; en el código HTML, podemos conseguirlo utilizando sólo CSS.</p>
<p>El único requisito para que el rollover funcione en Internet Explorer 6, es que la imagen esté contenida en un enlace. En el caso de que la imagen sea un botón de tipo image, necesitaremos añadir una clase por Javascript, ya que Explorer 6 ignora el :hover sobre cualquier elemento que no sea un enlace.</p>
<p>El principal inconveniente de los rollovers con Javascript es que necesitamos dos imágenes para cada estado. Con esta técnica, usamos una sola imagen con sus dos estados, como lo haríamos con un rollover &#8220;normal&#8221; con CSS.</p>
<p>Imagen usada para el rollover:</p>
<p><img class="alignnone size-full wp-image-376" src="http://uninstallme.com/wp/wp-content/boton-a.png" alt="" width="22" height="44" /></p>
<p>La técnica se basa en conseguir un efecto &#8220;clip&#8221; mediante el uso de overflow: hidden. Para ello metemos la imagen en un elemento &lt;span&gt; al que damos el ancho y alto del área visible de cada estado de la imagen. En el ejemplo 22 píxeles. Damos display block y posición relativa para que Internet Explorer sea feliz (en otros navegadores no es necesaria la posición relativa)</p>
<p>Por último, damos al enlace en estado hover, posición relativa y una posición negativa igual a la altura de la imagen.  En este caso no es necesario dejar un margen en blanco entre ambos estados de la imagen para prevenir que al aumentar el tamaño de texto de la página se vea parte de la imagen para el estado hover, como ocurre con los navegadores que no hacen zoom (Firefox 2, Google Chrome, Internet Explorer 6) y los rollovers con CSS mediante imágenes de fondo, ya que que podremos aplicar dimensiones mediante CSS diréctamente a la imagen, permitiendo que se dimensione al aumentar el tamaño de texto.</p>
<p>El código HTML utilizado sería el siguiente:</p>
<pre><code>
&lt;span class="img-rollover"&gt;
&lt;a href="#"&gt;&lt;img alt="A" src="boton-a.png" /&gt;&lt;/a&gt;
&lt;/span&gt;
</code></pre>
<p>Y el código CSS:</p>
<pre><code>
span.img-rollover{ width: 22px; height: 22px; overflow: hidden; display: block; position: relative; }
span.img-rollover a:hover{ top: -22px; position: relative;}
</code></pre>
<p><strong>El resultado:</strong></p>
<p><span class="img-rollover"><a href="#"><img class="boton" src="http://uninstallme.com/wp/wp-content/boton-a.png" alt="" /></a></span></p>
<p>Técnica inspirada en el botón de buscar de <a href="http://themaninblue.com/">The Man in Blue</a></p>
]]></content:encoded>
			<wfw:commentRss>http://uninstallme.com/rollover-de-imagenes-en-html-elemento-img-sin-javascript/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
	</channel>
</rss>
