<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>aurea</title>
	
	<link>http://aurea.es</link>
	<description>Desarrollador front-end, Estándares Web y Accesibilidad</description>
	<lastBuildDate>Sat, 29 Oct 2011 09:47:59 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.4</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/javiaurea" /><feedburner:info uri="javiaurea" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><image><link>http://aurea.es</link><url>http://aurea.es/wp-content/themes/aurea/images/aurea.gif</url><title>logo aurea webdesign</title></image><feedburner:emailServiceId>javiaurea</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><feedburner:feedFlare href="http://add.my.yahoo.com/rss?url=http%3A%2F%2Ffeeds.feedburner.com%2Fjaviaurea" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2Fjaviaurea" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare href="http://feeds.my.aol.com/add.jsp?url=http%3A%2F%2Ffeeds.feedburner.com%2Fjaviaurea" src="http://o.aolcdn.com/favorites.my.aol.com/webmaster/ffclient/webroot/locale/en-US/images/myAOLButtonSmall.gif">Subscribe with My AOL</feedburner:feedFlare><feedburner:feedFlare href="http://www.bloglines.com/sub/http://feeds.feedburner.com/javiaurea" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffeeds.feedburner.com%2Fjaviaurea" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2Fjaviaurea" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2Fjaviaurea" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><feedburner:feedFlare href="http://www.plusmo.com/add?url=http%3A%2F%2Ffeeds.feedburner.com%2Fjaviaurea" src="http://plusmo.com/res/graphics/fbplusmo.gif">Subscribe with Plusmo</feedburner:feedFlare><feedburner:feedFlare href="http://www.thefreedictionary.com/_/hp/AddRSS.aspx?http%3A%2F%2Ffeeds.feedburner.com%2Fjaviaurea" src="http://img.tfd.com/hp/addToTheFreeDictionary.gif">Subscribe with The Free Dictionary</feedburner:feedFlare><feedburner:feedFlare href="http://www.bitty.com/manual/?contenttype=rssfeed&amp;contentvalue=http%3A%2F%2Ffeeds.feedburner.com%2Fjaviaurea" src="http://www.bitty.com/img/bittychicklet_91x17.gif">Subscribe with Bitty Browser</feedburner:feedFlare><feedburner:feedFlare href="http://www.newsalloy.com/?rss=http%3A%2F%2Ffeeds.feedburner.com%2Fjaviaurea" src="http://www.newsalloy.com/subrss3.gif">Subscribe with NewsAlloy</feedburner:feedFlare><feedburner:feedFlare href="http://www.live.com/?add=http%3A%2F%2Ffeeds.feedburner.com%2Fjaviaurea" src="http://tkfiles.storage.msn.com/x1piYkpqHC_35nIp1gLE68-wvzLZO8iXl_JMledmJQXP-XTBOLfmQv4zhj4MhcWEJh_GtoBIiAl1Mjh-ndp9k47If7hTaFno0mxW9_i3p_5qQw">Subscribe with Live.com</feedburner:feedFlare><feedburner:feedFlare href="http://mix.excite.eu/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2Fjaviaurea" src="http://image.excite.co.uk/mix/addtomix.gif">Subscribe with Excite MIX</feedburner:feedFlare><feedburner:feedFlare href="http://www.yourminis.com/subscribe.aspx?u=http%3A%2F%2Ffeeds.feedburner.com%2Fjaviaurea" src="http://www.yourminis.com/images/addtoyourminisbadge.gif">Subscribe with Yourminis.com</feedburner:feedFlare><feedburner:feedFlare href="http://download.attensa.com/app/get_attensa.html?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2Fjaviaurea" src="http://www.attensa.com/blogs/attensa/WindowsLiveWriter/BadgeredintoBadges_10C02/attensa_feed_button5.gif">Subscribe with Attensa for Outlook</feedburner:feedFlare><feedburner:feedFlare href="http://www.webwag.com/wwgthis.php?url=http%3A%2F%2Ffeeds.feedburner.com%2Fjaviaurea" src="http://www.webwag.com/images/wwgthis.gif">Subscribe with Webwag</feedburner:feedFlare><feedburner:feedFlare href="http://hub.netomat.net/account/account.autoSubscribe.jspa?urls=http%3A%2F%2Ffeeds.feedburner.com%2Fjaviaurea" src="http://www.netomat.net/blogger/images/icon_netomat_feedbutton.gif">Subscribe with netomat Hub</feedburner:feedFlare><feedburner:feedFlare href="http://www.podcastready.com/oneclick_bookmark.php?url=http%3A%2F%2Ffeeds.feedburner.com%2Fjaviaurea" src="http://www.podcastready.com/images/podcastready_button.gif">Subscribe with Podcast Ready</feedburner:feedFlare><feedburner:feedFlare href="http://www.flurry.com/pushRssFeed.do?r=fb&amp;url=http%3A%2F%2Ffeeds.feedburner.com%2Fjaviaurea" src="http://www.flurry.com/images/flurry_rss_logo2.gif">Subscribe with Flurry</feedburner:feedFlare><feedburner:feedFlare href="http://www.wikio.com/subscribe?url=http%3A%2F%2Ffeeds.feedburner.com%2Fjaviaurea" src="http://www.wikio.com/shared/img/add2wikio.gif">Subscribe with Wikio</feedburner:feedFlare><feedburner:feedFlare href="http://www.dailyrotation.com/index.php?feed=http%3A%2F%2Ffeeds.feedburner.com%2Fjaviaurea" src="http://www.dailyrotation.com/rss-dr2.gif">Subscribe with Daily Rotation</feedburner:feedFlare><feedburner:browserFriendly>(Introduce un mensaje personal que quieras que aparezca en el encabezado de tu feed.)</feedburner:browserFriendly><item>
		<title>Abrir enlaces externos en nueva ventana añadiendo class external y _blank target al vuelo con jQuery</title>
		<link>http://aurea.es/2011/10/20/abrir-enlaces-externos-en-nueva-ventana-anadiendo-class-external-y-_blank-target-al-vuelo-con-jquery/</link>
		<comments>http://aurea.es/2011/10/20/abrir-enlaces-externos-en-nueva-ventana-anadiendo-class-external-y-_blank-target-al-vuelo-con-jquery/#comments</comments>
		<pubDate>Thu, 20 Oct 2011 09:44:33 +0000</pubDate>
		<dc:creator>javiaurea</dc:creator>
				<category><![CDATA[Estándares]]></category>
		<category><![CDATA[:not]]></category>
		<category><![CDATA[blank]]></category>
		<category><![CDATA[external]]></category>
		<category><![CDATA[href]]></category>
		<category><![CDATA[jquery]]></category>

		<guid isPermaLink="false">http://aurea.es/?p=5477</guid>
		<description><![CDATA[Hace tiempo (2009 y como pasa de rápido&#8230;) hablábamos de esto mismo en _blank, rel=”external” y una solución jQuery para abrir enlace en nueva ventana. Ahora traigo una revisión del snippet con esa misma funcionalidad pero un poco más completa y optimziada. Código jQuery jQuery&#40;document&#41;.ready&#40;function&#40;$&#41; &#123; &#160; //open external links in new window $&#40;'a:not([href^=&#34;http://aurea.es&#34;]):not([href^=&#34;#&#34;]):not([href^=&#34;/&#34;])'&#41;.addClass&#40;'external'&#41;; $&#40;'a[class=&#34;external&#34;]'&#41;.click&#40;function&#40;&#41;&#123; [...]]]></description>
			<content:encoded><![CDATA[<p>Hace tiempo (2009 y como pasa de rápido&#8230;) hablábamos de esto mismo en <a href="http://aurea.es/2009/06/25/_blank-relexternal-y-jquery-como-solucion-para-abrir-enlace-en-nueva-ventana/">_blank, rel=”external” y una solución jQuery para abrir enlace en nueva ventana</a>. Ahora traigo una revisión del snippet con esa misma funcionalidad pero un poco más completa y optimziada.</p>
<h3>Código jQuery</h3>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">jQuery<span style="color: #009900;">&#40;</span>document<span style="color: #009900;">&#41;</span>.<span style="color: #660066;">ready</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>$<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> 	
&nbsp;
	<span style="color: #006600; font-style: italic;">//open external links in new window</span>
	$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'a:not([href^=&quot;http://aurea.es&quot;]):not([href^=&quot;#&quot;]):not([href^=&quot;/&quot;])'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">addClass</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'external'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'a[class=&quot;external&quot;]'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">click</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span> $<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">attr</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'target'</span><span style="color: #339933;">,</span><span style="color: #3366CC;">'_blank'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<h3>Explicación</h3>
<ol>
<li>Comenzamos el mítico método <code>ready</code> de jQuery, encargado de comprobar si el <acronym title="Document Object Model" xml:lang="en">DOM</acronym> esta cargado y preparado para usarse. Tengamos en cuenta que deben estar todos los tags de enlaces ya descargados en el navegador para luego lanzar las operaciones sobre ellos.</li>
<li>A continuación hacemos 3 comprobaciones basadas en el atributo &#8220;href&#8221;. Que el link no comience con el &#8220;dominio del sitio web&#8221; (link absoluto), que no comience por &#8220;#&#8221; (link ancla), y que no comience por &#8220;/&#8221; (link relativo). A todos los enlaces que cumplen esto se les añade la clase &#8220;external&#8221;, ejemplo: <code>class="external"</code>.</li>
<li>Una vez tenemos identificados todos los enlaces externos, ya solo queda preparar un evento <code>.click()</code> que añada el atributo <code>target</code> con valor <code>blank</code> (nueva ventana/tab) cuando el evento se dispare.</li>
</ol>]]></content:encoded>
			<wfw:commentRss>http://aurea.es/2011/10/20/abrir-enlaces-externos-en-nueva-ventana-anadiendo-class-external-y-_blank-target-al-vuelo-con-jquery/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Acerca del Optimismo digital</title>
		<link>http://aurea.es/2011/01/20/acerca-del-optimismo-digital/</link>
		<comments>http://aurea.es/2011/01/20/acerca-del-optimismo-digital/#comments</comments>
		<pubDate>Thu, 20 Jan 2011 11:43:14 +0000</pubDate>
		<dc:creator>javiaurea</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://aurea.es/?p=5462</guid>
		<description><![CDATA[Recientemente y vía WeblogsSL pude participar en el diseño y desarrollo de una publicación cuya temática me ha llamado la atención: optimismodigital.com En su Manifiesto podemos leer: Pensamos que el fenómeno de la digitalización de la sociedad, las industrias y el mundo no solo es inevitable sino que además es POSITIVO, DIVERTIDO, APASIONANTE y LLENO [...]]]></description>
			<content:encoded><![CDATA[<p>Recientemente y vía <a href="http://www.weblogssl.com/">WeblogsSL</a> pude participar en el diseño y desarrollo de una publicación cuya temática me ha llamado la atención: <a href="http://www.optimismodigital.com/">optimismodigital.com</a></p>
<p>En su <a href="http://www.optimismodigital.com/manifiesto/">Manifiesto</a> podemos leer:</p>
<blockquote><p>Pensamos que el fenómeno de la digitalización de la sociedad, las industrias y el mundo no solo es inevitable sino que además es POSITIVO, DIVERTIDO, APASIONANTE y LLENO DE OPORTUNIDADES.  Nuestra actitud ante esta nueva era debe de ser de CURIOSIDAD, EXPERIMENTACIÓN y de DISFRUTE.</p>
</blockquote>
<p>No podría expresarlo de mejor forma, la idea es sentirnos optimistas ante la era digital en la que ya estamos inmersos <img src='http://aurea.es/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Los artículos que se van publicando son acertadísimos, y para comenzar ya han posteado gente de Google, Yahoo, Banco Popular, INGDirect, FXInteractive, BuyVip, etc.<br />
Me encanta lo que estoy leyendo, os dejo únicamente 3 joyitas:</p>
<ul>
<li><a href="http://www.optimismodigital.com/general/%C2%BFfacebook-es-una-tonteria-yo-no-tengo-tiempo/">“¿Facebook? Es una tontería, yo no tengo tiempo”</a></li>
<li><a href="http://www.optimismodigital.com/general/internet-y-el-cambio-de-modelo-productivo/">Internet y el cambio de modelo productivo</a></li>
<li><a href="http://www.optimismodigital.com/general/en-internet-si-eres-capaz-de-imaginarlo-es-posible/">En internet, si eres capaz de imaginarlo: es posible.</a></li>
</ul>]]></content:encoded>
			<wfw:commentRss>http://aurea.es/2011/01/20/acerca-del-optimismo-digital/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>El Almacén de la Ilusión de Coca-Cola</title>
		<link>http://aurea.es/2010/12/01/el-almacen-de-la-ilusion-de-coca-cola/</link>
		<comments>http://aurea.es/2010/12/01/el-almacen-de-la-ilusion-de-coca-cola/#comments</comments>
		<pubDate>Wed, 01 Dec 2010 16:32:35 +0000</pubDate>
		<dc:creator>javiaurea</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://aurea.es/?p=5415</guid>
		<description><![CDATA[Familiares, amigos, o simplemente aquellos que me seguís por el blog, quizás recordéis mi proyecto truequi.com, una plataforma de intercambio de objetos. Pues bien, por aquí creemos que la ilusión es capaz de mover el mundo. Así que para esta Navidad vamos a ponerla en marcha entre todos, porque pensamos que la ilusión no se [...]]]></description>
			<content:encoded><![CDATA[<p>Familiares, amigos, o simplemente aquellos que me seguís por el blog, quizás recordéis mi proyecto <a href="http://truequi.com/">truequi.com</a>, una plataforma de intercambio de objetos.</p>
<p>Pues bien, por aquí creemos que la ilusión es capaz de mover el mundo. Así que para esta Navidad vamos a ponerla en marcha entre todos, porque pensamos que la ilusión no se crea ni se destruye, <strong>se intercambia</strong>.</p>
<p>Y es por eso que nace en España el <a href="https://navidad.cocacola.es/">Almacén de la Ilusión</a>. Partiendo de una gran iniciativa de Coca-Cola y tomando como base truequi, junto con el trabajo de grandísimos profesionales como Paco, Pilar, Carmen, Marie-la, Sertxu (equipo digital de Coca-Cola), la gente de Genetsis (infraestructura, servidores), Correos, Chonoexpress…, y luego estaba Marcos y la gente de <a href="http://www.q-interactiva.com">Q-Interactiva</a>, <a href="http://twitter.com/#!/igayoso">Israel</a> y yo mismo que hemos dado forma y vida al sitio web. Un montón de gente persiguiendo un mismo objetivo, y la verdad es que nos hemos entendido muy bien desde el primer momento. Al final ya parecía aquello una gran familia <img src='http://aurea.es/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><a href="https://navidad.cocacola.es/"><a href="http://aurea.es/wp-content/uploads/almacen-ilusion-facebook.gif"><img src="http://aurea.es/wp-content/uploads/almacen-ilusion-facebook.gif" alt="" title="almacen-ilusion-facebook" width="200" height="200" class="alignleft size-full wp-image-5466" /></a></a>¡¡En el Almacén hay sitio para todo!! Puedes aportar tus ilusiones, aquellos artículos que han formado parte de tu vida y pienses que ahora pueden hacer feliz a otra persona. A cambio de subir tus ilusiones podrás escoger otras de personas que como tú quieran compartir las suyas.<br />
Actualmente ya hay libros, películas, música, videojuegos, y otros objetos curiosos.<br />
<br style="clear: both;" /></p>
<p>Y la cosa no acaba aquí, gracias a <a href="http://bit.ly/hx03fi">un acuerdo alcanzado entre Coca-Cola y Correos España</a>, los 40.000 primeros envíos serán gratuitos. Vamos, que debido al amplio margen financiado <strong>todos podremos enviar y recibir nuestros regalos sin coste alguno</strong>.</p>
<p>Con todo esto se aprovecha la sinergia entre dos grandes empresas, como Coca-Cola y Correos, con gran capacidad para generar ilusión y hacer realidad el envío de paquetes en unas fechas marcadas por el gran incremento de actividad postal.</p>
<p>Para seros sinceros&#8230; no recuerdo una iniciativa tan bonita y valiente como esta en los 12 años que he vivido Internet. Pienso que toda España puede sentirse orgullosa de participar en ello <img src='http://aurea.es/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Así que toca olvidar por un momento la crisis, en el <a href="https://navidad.cocacola.es/">Almacén de la Ilusión</a> el dinero no tiene cabida, solamente la ilusión de artículos que puedas ofrecer y recibir <img src='http://aurea.es/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Bienvenidos al <a href="https://navidad.cocacola.es/">Almacén de la Ilusión</a>.</p>
<p><object type="application/x-shockwave-flash" data="http://www.youtube.com/v/zSNtFo8223E" width="425" height="355" class="embedflash"><param name="movie" value="http://www.youtube.com/v/zSNtFo8223E" /><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><small>(Please open the article to see the flash file or player.)</small></object></p>]]></content:encoded>
			<wfw:commentRss>http://aurea.es/2010/12/01/el-almacen-de-la-ilusion-de-coca-cola/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Adios IFRAME, hola OBJECT</title>
		<link>http://aurea.es/2010/10/14/adios-iframe-hola-object/</link>
		<comments>http://aurea.es/2010/10/14/adios-iframe-hola-object/#comments</comments>
		<pubDate>Thu, 14 Oct 2010 12:25:24 +0000</pubDate>
		<dc:creator>javiaurea</dc:creator>
				<category><![CDATA[Estándares]]></category>

		<guid isPermaLink="false">http://aurea.es/?p=5405</guid>
		<description><![CDATA[Cuando necesitamos incluir un objeto HTML externo incrustado en una página podemos recurrir al tag IFRAME. Si el objeto que necesitamos incrustar es un SWF se suele recurrir a OBJECT y EMBED. Antes de seguir, es bueno recordar la historia de los elementos IMG, EMBED y OBJECT. OBJECT como sustituto de IFRAME Con IFRAME podemos [...]]]></description>
			<content:encoded><![CDATA[<p>Cuando necesitamos incluir un objeto <acronym title="HyperText Markup Language" xml:lang="en">HTML</acronym> externo incrustado en una página podemos recurrir al tag <a href="http://www.w3.org/TR/REC-html40/present/frames.html#h-16.5">IFRAME</a>.<br />
Si el objeto que necesitamos incrustar es un SWF se suele recurrir a <a href="http://www.w3.org/TR/REC-html40/struct/objects.html">OBJECT</a> y EMBED.</p>
<p>Antes de seguir, es bueno recordar <a href="http://aurea.es/2008/11/27/breve-historia-de-img-embed-object/">la historia de los elementos IMG, EMBED y OBJECT</a>.</p>
<h3>OBJECT como sustituto de IFRAME</h3>
<p>Con <code>IFRAME</code> podemos embeber un tipo de documento HTML. Pero si atendemos a la definición de <code>OBJECT</code> veremos que podemos embeber varios tipos de documento como: <acronym title="HyperText Markup Language" xml:lang="en">HTML</acronym>, SWF, VIDEO, IMAGEN (<a href="http://wiki.dreamhost.com/index.php/Object_Embedding">ver ejemplos</a>).<br />
Teniendo en cuenta lo anterior, IFRAME puede verse como un TAG redundante.</p>
<p>Por otro lado en la versión <acronym title="eXtensible HyperText Markup Language" xml:lang="en">XHTML</acronym> Strict, el <acronym title="Document Type Definition" xml:lang="en">DTD</acronym> no admite el tag IFRAME. Al fin y al cabo forma parte del pasado y la <acronym title="World Wide Web Consortium" xml:lang="en">W3C</acronym> siempre ha recomendado el uso de un OBJECT para incrustar los diferentes documentos, tanto si es vídeo, como imagen, como una página html.</p>
<p>Además hay que tener cuidado con IFRAME en Firefox, generado de forma dinámica podemos tener problemas (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=279048">Bug 279048</a>).</p>
<h3><acronym title="Internet Explorer" xml:lang="en">IE</acronym> como de costumbre va contracorriente</h3>
<p>Si usamos OBJECT en Internet Explorer, debemos tener en cuenta que no reconoce el atributo <code>type</code>:</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">&lt;object type=&quot;text/html&quot; ...</pre></div></div>

<p>En su lugar tenemos que indicar un <a href="http://msdn.microsoft.com/en-us/library/ms533559%28VS.85%29.aspx">atributo classid</a>:</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">&lt;object classid=&quot;clsid:F08DF954-8592-11D1-B16A-00C0F0283628&quot; ...</pre></div></div>

<p>De todas formas con varias pruebas que hice he comprobado que el comportamiento es irregular en las diferentes versiones de la familia Internet Explorer (6, 7, 8, 9).<br />
En cambio con IFRAME, Internet Explorer se maneja de maravilla <img src='http://aurea.es/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />  todas las versiones interpretan y dan el mismo resultado.</p>
<h3>IFRAME para <acronym title="Internet Explorer" xml:lang="en">IE</acronym>, OBJECT para el resto</h3>
<p>Al final pienso que la mejor opción cross-browser es mantener el IFRAME para la familia Internet Explorer y recuperar el OBJECT para el resto de navegadores (Firefox, Opera, Safari, Chrome).</p>
<p>Para hacer la bifurcación he recurrido a los <a href="http://aurea.es/2010/05/28/comentarios-condicionales-de-internet-explorer/">comentarios condicionales de IE</a>:</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">&lt;!--[if IE]&gt;
    &lt;iframe src=&quot;page.htm&quot;&gt;contenido alternativo&lt;/iframe&gt;
&lt;![endif]--&gt;
&lt;!--[if !IE]&gt; &lt;--&gt;
    &lt;object type=&quot;text/html&quot; data=&quot;page.htm&quot;&gt;contenido alternativo&lt;/object&gt;
&lt;!--&gt; &lt;![endif]--&gt;</pre></div></div>

<p>Conclusión, voy abrazando OBJECT mientras digo adiós al IFRAME a excepción de <acronym title="Internet Explorer" xml:lang="en">IE</acronym> <img src='http://aurea.es/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>]]></content:encoded>
			<wfw:commentRss>http://aurea.es/2010/10/14/adios-iframe-hola-object/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>CSS adaptado a cada navegador con PHP</title>
		<link>http://aurea.es/2010/10/06/css-adaptado-a-cada-navegador-con-php/</link>
		<comments>http://aurea.es/2010/10/06/css-adaptado-a-cada-navegador-con-php/#comments</comments>
		<pubDate>Wed, 06 Oct 2010 07:35:41 +0000</pubDate>
		<dc:creator>javiaurea</dc:creator>
				<category><![CDATA[Estándares]]></category>
		<category><![CDATA[chrome]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[ie]]></category>
		<category><![CDATA[Opera]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[safari]]></category>

		<guid isPermaLink="false">http://aurea.es/?p=5355</guid>
		<description><![CDATA[Tener diferentes hojas de estilo dependiendo del navegador me parece algo horrible .  Pero si por algún motivo es necesario, podemos emplear una forma bastante fácil y limpia mediante PHP (Ref. Andrew Martin). Para ello, (1) pondremos un CSS base que sea compatible para todos los navegadores y a continuación (2) haremos uso del array [...]]]></description>
			<content:encoded><![CDATA[<p>Tener diferentes hojas de estilo dependiendo del navegador me parece algo horrible <img src='http://aurea.es/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' />  .  Pero si por algún motivo es necesario, podemos emplear una forma bastante fácil y limpia mediante <a href="http://php.net">PHP</a> (Ref. <a href="http://antigravity-systems.com">Andrew Martin</a>).</p>
<p>Para ello, (1) pondremos un <acronym title="Cascading Style Sheets" xml:lang="en">CSS</acronym> base que sea compatible para todos los navegadores y a continuación (2) haremos uso del array <a href="http://www.php.net/manual/en/reserved.variables.server.php">$_SERVER</a> y del campo donde se cargan las cabeceras con información del navegador del usuario &#8220;HTTP_USER_AGENT&#8221;.</p>
<p>1. Código <acronym title="Cascading Style Sheets" xml:lang="en">CSS</acronym> base:</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">&lt;link rel=&quot;stylesheet&quot; href=&quot;base.css&quot; type=&quot;text/css&quot; /&gt;</pre></div></div>

<p>2. Código PHP:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$browser</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'HTTP_USER_AGENT'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>	
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">preg_match</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'/MSIE.8/i'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$browser</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'&lt;link rel=&quot;stylesheet&quot; href=&quot;msie8.css&quot; type=&quot;text/css&quot; /&gt;'</span><span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span> 
<span style="color: #b1b100;">elseif</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">preg_match</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'/MSIE.7/i'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$browser</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'&lt;link rel=&quot;stylesheet&quot; href=&quot;msie7.css&quot; type=&quot;text/css&quot; /&gt;'</span><span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span>
<span style="color: #b1b100;">elseif</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">preg_match</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'/MSIE.6/i'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$browser</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'&lt;link rel=&quot;stylesheet&quot; href=&quot;msie6.css&quot; type=&quot;text/css&quot; /&gt;'</span><span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span>
<span style="color: #b1b100;">elseif</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">preg_match</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'/MSIE.9/i'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$browser</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'&lt;link rel=&quot;stylesheet&quot; href=&quot;msie9.css&quot; type=&quot;text/css&quot; /&gt;'</span><span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span>
<span style="color: #b1b100;">elseif</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">preg_match</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'/Firefox.2/i'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$browser</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'&lt;link rel=&quot;stylesheet&quot; href=&quot;firefox2.css&quot; type=&quot;text/css&quot; /&gt;'</span><span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span>
<span style="color: #b1b100;">elseif</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">preg_match</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'/Firefox.3.5/i'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$browser</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'&lt;link rel=&quot;stylesheet&quot; href=&quot;firefox35.css&quot; type=&quot;text/css&quot; /&gt;'</span><span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span>
<span style="color: #b1b100;">elseif</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">preg_match</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'/Firefox.3/i'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$browser</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'&lt;link rel=&quot;stylesheet&quot; href=&quot;firefox3.css&quot; type=&quot;text/css&quot; /&gt;'</span><span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span>
<span style="color: #b1b100;">elseif</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">preg_match</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'/Chrome/i'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$browser</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'&lt;link rel=&quot;stylesheet&quot; href=&quot;chrome.css&quot; type=&quot;text/css&quot; /&gt;'</span><span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span>
<span style="color: #b1b100;">elseif</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">preg_match</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'/Safari/i'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$browser</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'&lt;link rel=&quot;stylesheet&quot; href=&quot;safari.css&quot; type=&quot;text/css&quot; /&gt;'</span><span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span>
<span style="color: #b1b100;">elseif</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">preg_match</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'/Opera/i'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$browser</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'&lt;link rel=&quot;stylesheet&quot; href=&quot;opera.css&quot; type=&quot;text/css&quot; /&gt;'</span><span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span>
<span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span> <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'&lt;link rel=&quot;stylesheet&quot; href=&quot;unknown.css&quot; type=&quot;text/css&quot; /&gt;'</span><span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span></pre></div></div>

<p>El código escribirá el link con la hoja de estilo correspondiente al navegador empleado por el usuario basándose en la comparación de cadenas.</p>
<p>Si lo que queremos es únicamente discernir la versión de <acronym title="Microsoft Internet Explorer" xml:lang="en">MSIE</acronym>, podemos también recurrir a los <a href="http://aurea.es/2010/05/28/comentarios-condicionales-de-internet-explorer/">comentarios condicionales de Internet Explorer</a>.</p>
<p>Para hacer las pruebas necesarias con los diferentes navegadores, podemos descargarlos o <a href="http://aurea.es/2009/08/06/emular-ie8ie7ie6-firefox-safari-chrome-opera/">emularlos</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://aurea.es/2010/10/06/css-adaptado-a-cada-navegador-con-php/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Consejos para Newsletter / e-mail</title>
		<link>http://aurea.es/2010/07/26/consejos-para-newsletter-e-mail/</link>
		<comments>http://aurea.es/2010/07/26/consejos-para-newsletter-e-mail/#comments</comments>
		<pubDate>Mon, 26 Jul 2010 07:27:23 +0000</pubDate>
		<dc:creator>javiaurea</dc:creator>
				<category><![CDATA[Usabilidad]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[newsletter]]></category>

		<guid isPermaLink="false">http://aurea.es/?p=5331</guid>
		<description><![CDATA[A continuación recopilo algunos consejos beneficiosos para evitar el Spam y mejorar la Usabilidad del Newsletter, en algunos casos también aplicables a un simple e-mail enviado al usuario. Registro Resulta pesado rellenar varios campos para una mera suscripción a newsletter. Es suficiente con tener el e-mail y nombre del usuario. Para evitar e-mails falsos u [...]]]></description>
			<content:encoded><![CDATA[<p>A continuación recopilo algunos consejos beneficiosos para evitar el Spam y mejorar la Usabilidad del Newsletter, en algunos casos también aplicables a un simple e-mail enviado al usuario.<span id="more-5331"></span></p>
<h3>Registro</h3>
<ul>
<li>Resulta pesado rellenar varios campos para una mera suscripción a newsletter. Es suficiente con tener el e-mail y nombre del usuario.</li>
<li>Para evitar e-mails falsos u otros problemas de seguridad, el registro al newsletter podría ser a partir de una confirmación de correo enviado al buzón del usuario.</li>
<li>El borrar la suscripción debería ser algo fácil, un clic y bien visible en el propio newsletter enviado. De lo contrario puede que el usuario (por no buscar) acabe marcando el newsletter como spam, perjudicando a la dirección de envió.</li>
</ul>
<h3>Spam</h3>
<ul>
<li>Evitar los filtros spam no incluyendo palabras como: gratis, free, descuento, etc. Algo que puede ser difícil teniendo en cuenta el sitio web y el target al que vaya dirigido.</li>
<li>Encabezar o situar en posiciones superior la fecha del newsletter. Esto podría evitar el ser confundido con Spam.</li>
<li>Chequear los enlaces enviados en el contenido del newsletter. No pueden existir enlaces que lleven a un &#8220;not found&#8221; y menos aún enlaces que puedan llevar a sitios web penalizados por los buscadores.</li>
<li>El envió de e-mails debe ser distribuido en periodos, no debe hacerse nunca de forma masiva y simultanea.</li>
<li>Si se compran o se venden listas de e-mails lo más probable es que se acabe cayendo en una lista negra, con su consiguiente penalización como Spammer. Es complejo y lento salir de listas negras.</li>
<li>Si varios e-mails chequean como spam al newsletter se puede caer en el riesgo de que un proveedor identifique la <acronym title="Internet Protocol" xml:lang="en">IP</acronym> como Spammer.</li>
<li>Una forma de asegurarnos que el newsletter sea leído en inbox y no pase directamente a spam, es hacer que la dirección de envió figure en listas blancas (desconozco como llegar a ello).</li>
<li>Quitar URGENTEMENTE aquellos suscriptores que están eliminando, no abren, o marcan como spam el newsletter. Lo están perjudicando en cada acción.</li>
</ul>
<h3>Comunicación</h3>
<ul>
<li>Estar en contacto con los lectores. Tras el registro al newsletter no pueden pasar los primeros 10 días sin ninguna noticia.</li>
<li>Dar algún enlace hacia una web/email para contactar con el soporte.</li>
<li>Se puede enviar el newsletter desde una dirección a la que el usuario pueda responder y así obtener con ello feedback directo del lector. Incluso invitarles a realizar ese feedback.</li>
<li>Usar un lenguaje que tenga que ver con el target (edad, sexo, estudios, etc). Por ejemplo puede ser un lenguaje llano, natural o espontaneo que resulte muy cercano e invite a leer y participar.</li>
<li>Los lectores parecen se más receptivos los Martes y Miércoles de 2 a 3 PM. Según he leído las razones pueden deberse a que los usuarios en el Lunes tienen la bandeja algo saturada del fin de semana, y los Jueves/Viernes ya vuelven a preocuparse más del fin de semana que del correo pendiente.</li>
<li>Personalizar los e-mails para resultar más cercano y menos automatizado. Esto puede realizarse con variables para el saludo y despedida:
<ul>
<li>Hola [username]</li>
<li>Saludos [username] del equipo [nombre-proyecto]</li>
</ul>
<p>Incluso se podría personalizar en función de la hora del envió:</p>
<ul>
<li>Buenos días [username]</li>
<li>Buenas tardes [username]</li>
<li>Buenas noches [username]</li>
</ul>
</li>
</ul>
<h3>Contenido</h3>
<ul>
<li>Poner un link para ver la versión web del email enviado (una alternativa).</li>
<li>Pensar en títulos adecuados para cada newsletter.<br />
Ejemplo: Compañía &#8211; Asunto [Ref.12]</p>
<ul>
<li>Primero la compañía/empresa/marca que enviá el newsletter.</li>
<li>A continuación el asunto/titulo del newsletter.</li>
<li>Finalmente podemos incluir el número (referencia) del newsletter.</li>
</ul>
<p>*nota: el asunto debe tener menos de 50 caracteres por razones de compatibilidad con el mayor número de gestores posible.</li>
<li>Indicar al usuario que ha recibido el email debido a que esta suscrito en [nombre-proyecto] (enlace a la web).</li>
<li>Los newsletter deben ir relacionados con la temática que se espera. El contenido debe ser de gran valor para no perder suscriptores.</li>
<li>Dar muy buenas razones para permanecer suscrito al newsletter. Esto puede hacerse con descuentos, promociones, noticias, secretos, en definitiva cosas que no puedan obtener por otros medios.</li>
<li>Incluir un enlace a la política de privacidad.</li>
<li>Incluir datos para saber que detrás hay una empresa real. Por ejemplo la dirección, el teléfono, etc.</li>
<li>Invitar al usuario a seguir leyendo contenidos con enlaces hacia la página web.</li>
</ul>
<h3>Diseño</h3>
<p>Merece un post aparte debido a las peculiaridades: <a href="http://aurea.es/2009/05/27/codigo-para-el-diseno-de-e-mails-y-newsletters/">Código para el diseño de e-mails y newsletters</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://aurea.es/2010/07/26/consejos-para-newsletter-e-mail/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Etiqueta PRE, desbordamiento en gmail y solución con nl2br o white-space</title>
		<link>http://aurea.es/2010/07/19/etiqueta-pre-desbordamiento-en-gmail-solucion-con-white-space/</link>
		<comments>http://aurea.es/2010/07/19/etiqueta-pre-desbordamiento-en-gmail-solucion-con-white-space/#comments</comments>
		<pubDate>Mon, 19 Jul 2010 14:22:31 +0000</pubDate>
		<dc:creator>javiaurea</dc:creator>
				<category><![CDATA[Estándares]]></category>
		<category><![CDATA[gmail]]></category>
		<category><![CDATA[nl2br]]></category>
		<category><![CDATA[pre]]></category>
		<category><![CDATA[white-space]]></category>

		<guid isPermaLink="false">http://aurea.es/?p=5314</guid>
		<description><![CDATA[Me he encontrado con un problema que parece afectar exclusivamente a Gmail y que ocurre al recibir un mail que contiene la etiqueta pre. La misión de esta etiqueta es pre-formatear su contenido, con lo cual mantiene en el texto los espacios en blanco, saltos de línea, etc. Y es justamente por esa razón por [...]]]></description>
			<content:encoded><![CDATA[<p>Me he encontrado con un problema que parece afectar exclusivamente a <a href="http://gmail.com">Gmail</a> y que ocurre al recibir un mail que contiene la etiqueta <a href="http://www.w3.org/TR/html401/struct/text.html#h-9.3.4">pre</a>. </p>
<p>La misión de esta etiqueta es pre-formatear su contenido, con lo cual mantiene en el texto los espacios en blanco, saltos de línea, etc. Y es justamente por esa razón por la que debemos tener mucho cuidado (no soy muy amigo de emplearla).</p>
<p>En Gmail, por ejemplo se producía un desbordamiento horizontal, donde salia el scroll y el texto continuaba a lo largo y ancho de la ventana <img src='http://aurea.es/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Como solución, sustituir <code>pre</code> por un simple <code>div</code> en conjunción con una de estas dos opciones para el contenido que albergará:</p>
<ul>
<li>Formatear el contenido con PHP: Podemos ayudarnos de la función <a href="http://php.net/manual/es/function.nl2br.php">nl2br</a> que insertará los saltos de línea.<br />
<br />Ejemplo:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;">    <span style="color: #990000;">nl2br</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'texto con formato'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

</li>
<li>Formatear el contenido con CSS: Podemos usar la regla <code>white-space: pre;</code> para simular el comportamiento de la etiqueta <code>pre</code>.<br />
<br />Ejemplo:</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">    &lt;div style=&quot;white-space: pre;&quot;&gt;
        texto con formato
    &lt;/div&gt;</pre></div></div>

</li>
</ul>]]></content:encoded>
			<wfw:commentRss>http://aurea.es/2010/07/19/etiqueta-pre-desbordamiento-en-gmail-solucion-con-white-space/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Optimización de CSS; Nicole Sullivan nos enseña 5 errores típicos y 5 buenas maneras</title>
		<link>http://aurea.es/2010/07/15/optimizacion-de-css-nicole-sullivan-nos-ensena-5-errores-tipicos-y-5-buenas-maneras/</link>
		<comments>http://aurea.es/2010/07/15/optimizacion-de-css-nicole-sullivan-nos-ensena-5-errores-tipicos-y-5-buenas-maneras/#comments</comments>
		<pubDate>Thu, 15 Jul 2010 18:51:29 +0000</pubDate>
		<dc:creator>javiaurea</dc:creator>
				<category><![CDATA[Estándares]]></category>
		<category><![CDATA[cdn]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[firebug]]></category>
		<category><![CDATA[gzip]]></category>
		<category><![CDATA[optimización]]></category>
		<category><![CDATA[pagespeed]]></category>
		<category><![CDATA[yslow]]></category>
		<category><![CDATA[yui]]></category>

		<guid isPermaLink="false">http://aurea.es/?p=5276</guid>
		<description><![CDATA[Hace un tiempo escribí sobre algunas técnicas para poder optimizar nuestros códigos CSS. También mencionaba herramientas que puede facilitar nuestro trabajo de optimización: Firebug, PageSpeed, YSlow y YUI Compressor. 5 errores típicos Un 42% de páginas no comprimen su contenido con GZIP. Un 44% de páginas enlazan a más de 2 ficheros CSS. Un 56% [...]]]></description>
			<content:encoded><![CDATA[<p>Hace un tiempo escribí sobre <a href="http://aurea.es/2010/03/10/optimizar-css-12-consejos-y-3-herramientas/">algunas técnicas para poder optimizar nuestros códigos CSS</a>. También mencionaba herramientas que puede facilitar nuestro trabajo de optimización: <a href="https://addons.mozilla.org/es-ES/firefox/addon/1843">Firebug</a>, <a href="http://code.google.com/intl/es-ES/speed/page-speed/">PageSpeed</a>, <a href="http://developer.yahoo.com/yslow/">YSlow</a> y <a href="http://developer.yahoo.com/yui/compressor/">YUI Compressor</a>.</p>
<h3>5 errores típicos</h3>
<ul>
<li>Un 42% de páginas no comprimen su contenido con GZIP.</li>
<li>Un 44% de páginas enlazan a más de 2 ficheros CSS.</li>
<li>Un 56% no sirven el <acronym title="Cascading Style Sheets" xml:lang="en">CSS</acronym> con cookies (o no la entiendo, o esta la veo complicada de evitar sin CDN).</li>
<li>Un 63% no minimiza sus ficheros con herramientas como <a href="http://developer.yahoo.com/yui/compressor/">YUI Compressor</a>.</li>
<li>Un 21% de páginas tienen ficheros <acronym title="Cascading Style Sheets" xml:lang="en">CSS</acronym> con más de 100K de peso (esta es de escándalo).</li>
</ul>
<p>Si en nuestros <acronym title="Cascading Style Sheets" xml:lang="en">CSS</acronym> sumamos: demasiada atomicidad, normas, duplicación, conflictos y lo aderezamos todo con algo de impredecibilidad, tendremos por resultado un enorme e incontrolable CSS.</p>
<h3>5 buenas maneras</h3>
<p>Lo que debemos evitar es:</p>
<h4>1. La Atomicidad</h4>
<p>Imaginemos una página Web como si fuera un coche. Para crear ese coche usamos piezas de lego, una a una las vamos posicionando hasta crear la figura del coche. </p>
<ul>
<li>Con <acronym title="Cascading Style Sheets" xml:lang="en">CSS</acronym> básicamente hacemos lo mismo, podemos ir pieza a pieza posicionando y creando el sitio web. Y es justamente el planteamiento que debemos cambiar.</li>
<li>La idea es evitar pensar en pequeñas piezas (átomos) y pensar en objetos que se puedan reutilizar. De esta manera podemos por ejemplo crear con <acronym title="Cascading Style Sheets" xml:lang="en">CSS</acronym> una rueda del coche, que a su vez bastaría para simular las otras tres restantes.</li>
<li>Esto se podría considerar una evolución de la forma de pensar en el CSS.</li>
</ul>
<h4>2. Normas desfasadas</h4>
<p>Que van acumulandose, que no se reutilizan, que son incrementales en el tiempo, muy especificas, etc.</p>
<h4>3. Normas imprevisibles</h4>
<p>Que no pueden ser reutilizadas y que son totalmente dependientes de su ubicación.</p>
<h4>4. Guerras de especificidad</h4>
<p>Nodos hijos de hijos de otros hijos, hacks, estilos con #ID que no pueden ser reutilizados, la sentencia !important no tiene cabida (si se usa bien la cascada), <a href="http://aurea.es/2010/03/10/optimizar-css-12-consejos-y-3-herramientas/">etc</a>. </li>
<h4>5. Duplicidad</h4>
<p>Definir en numerosas ocasiones reglas como: margin, float, font-size, etc. Como solución tenemos:</p>
<ul>
<li><a href="http://aurea.es/2008/11/27/tecnicas-para-resetear-css/">Algunas técnicas para resetear el CSS</a>.</li>
<li>Pensar en global, en todo el sitio web. Para ello ayuda mucho seguir <a href="http://aurea.es/2010/04/29/diseno-centrado-en-el-usuario-una-propuesta/">una metodología como la DCU</a>, para abstraer el futuro marcado de los mockups y ejecutar nuestro &#8220;<acronym title="Cascading Style Sheets" xml:lang="en">CSS</acronym> kung-fu&#8221;! <img src='http://aurea.es/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </li>
</ul>
<p><object type="application/x-shockwave-flash" data="http://www.youtube.com/v/j6sAm7CLoCQ" width="425" height="355" class="embedflash"><param name="movie" value="http://www.youtube.com/v/j6sAm7CLoCQ" /><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><small>(Please open the article to see the flash file or player.)</small></object></p>]]></content:encoded>
			<wfw:commentRss>http://aurea.es/2010/07/15/optimizacion-de-css-nicole-sullivan-nos-ensena-5-errores-tipicos-y-5-buenas-maneras/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>PNG transparente e IE, el mítico problema…</title>
		<link>http://aurea.es/2010/07/09/png-transparente-e-ie-el-mitico-problema/</link>
		<comments>http://aurea.es/2010/07/09/png-transparente-e-ie-el-mitico-problema/#comments</comments>
		<pubDate>Fri, 09 Jul 2010 07:31:29 +0000</pubDate>
		<dc:creator>javiaurea</dc:creator>
				<category><![CDATA[Estándares]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[filtro]]></category>
		<category><![CDATA[ie]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[png]]></category>

		<guid isPermaLink="false">http://aurea.es/?p=5251</guid>
		<description><![CDATA[Internet Explorer en su versión 6 y anteriores no soporta la transparencia del formato PNG. Para solucionar este problema existen varias técnicas: A través del filtro Directx AlphaImageLoader. Con Behaviors. El conocido pngfix (con la ayuda de JavaScript). Algunas implementaciones pngfix para frameworks de JavaScript, como jquery.pngFix.js Todas ellas presentan pros y contras. Dependiendo del [...]]]></description>
			<content:encoded><![CDATA[<p>Internet Explorer en su versión 6 y anteriores no soporta la transparencia del formato PNG.<br />
Para solucionar este problema existen varias técnicas:</p>
<ul>
<li>A través del filtro Directx <a href="http://msdn.microsoft.com/en-us/library/ms532969%28VS.85%29.aspx">AlphaImageLoader</a>.</li>
<li>Con <a href="http://www.twinhelix.com/css/iepngfix/">Behaviors</a>.</li>
<li>El conocido <a href=" http://homepage.ntlworld.com/bobosola/index.htm">pngfix</a> (con la ayuda de JavaScript).</li>
<li>Algunas implementaciones pngfix para frameworks de JavaScript, como <a href="http://jquery.andreaseberhard.de/pngFix/">jquery.pngFix.js</a></li>
</ul>
<p>Todas ellas presentan pros y contras. Dependiendo del proyecto puede que venga mejor uno u otro, o que simplemente alguno no funcione por conflictos de JavaScript o misteriosas razones que solo las meigas de <acronym title="Internet Explorer" xml:lang="en">IE</acronym> conocen. Así que la única solución es probar y probar&#8230; <img src='http://aurea.es/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> </p>
<p>A continuación voy a desarrollar la primera de ellas.</p>
<h3>AlphaImageLoader</h3>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;"><span style="color: #cc00cc;">#logo</span>  <span style="color: #00AA00;">&#123;</span> 
	<span style="color: #000000; font-weight: bold;">background-image</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">none</span><span style="color: #00AA00;">;</span>
	filter<span style="color: #00AA00;">:</span> progid<span style="color: #3333ff;">:DXImageTransform</span><span style="color: #6666ff;">.Microsoft</span>.AlphaImageLoader<span style="color: #00AA00;">&#40;</span>
		src<span style="color: #00AA00;">=</span><span style="color: #ff0000;">'http://..../logo.png'</span><span style="color: #00AA00;">,</span> 
		sizingMethod<span style="color: #00AA00;">=</span><span style="color: #ff0000;">'crop'</span>
	<span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">;</span> 
<span style="color: #00AA00;">&#125;</span></pre></div></div>

<p>El primero de los pasos es indicar que no hay ningún fondo <code>background-image: none;</code>, a continuación usamos <code>filter</code> y la llamada Directx de Microsoft para cargar imágenes que incorporan factor alfa.  En el parámetro <code>src</code> va la ruta absoluta al fichero png.</p>
<h3>Conflicto con los enlaces</h3>
<p>Con lo dicho anteriormente el <acronym title="Portable Network Graphics" xml:lang="en">PNG</acronym> es mostrado con transparencia y sin errores, pero los enlaces no realizan el comportamiento adecuado si se encuentran en el interior de un elemento que tenga aplicado el filtro AlphaImageLoader.</p>
<p>Para solucionar este último problema podemos recurrir al siguiente código CSS:</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;"><span style="color: #cc00cc;">#logo</span> a <span style="color: #00AA00;">&#123;</span> 
	<span style="color: #000000; font-weight: bold;">position</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">relative</span><span style="color: #00AA00;">;</span> 
	<span style="color: #000000; font-weight: bold;">z-index</span><span style="color: #00AA00;">:</span> <span style="color: #cc66cc;">1</span><span style="color: #00AA00;">;</span> 
<span style="color: #00AA00;">&#125;</span></pre></div></div>

<p>Cuando se aplica un filtro el elemento tiene una posición estática y esto presenta problemas en los enlaces, por ello se fuerza por medio de <acronym title="Cascading Style Sheets" xml:lang="en">CSS</acronym> a que los enlaces dispongan de una posición relativa y con z-index en una capa inferior.</p>
<h3>Solo para Internet Explorer</h3>
<p>Otros navegadores modernos (Firefox, Opera, Safari, Chrome) soportan perfectamente el formato <acronym title="Portable Network Graphics" xml:lang="en">PNG</acronym> y su grado de transparencia, por tanto sería bueno pensar en ofrecer esta técnica únicamente cuando el usuario se encuentra navegando con Internet Explorer. Para lograrlo podemos recurrir a los <a href="http://aurea.es/2010/05/28/comentarios-condicionales-de-internet-explorer/">comentarios condicionales</a>:</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">&lt;!--[if lt IE 7]&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;ie6.css&quot; mce_href=&quot;ie6.css&quot; type=&quot;text/css&quot; media=&quot;screen&quot; /&gt;&lt;![endif]--&gt;</pre></div></div>

<p>Mediante este comentario condicional ubicado en el <code>head</code> podemos indicar que solo aquellos navegadores que sean inferiores al Internet Explorer 7  <code>[if lt <acronym title="Internet Explorer" xml:lang="en">IE</acronym> 7]</code> se enlace el fichero de esitlo “ie6.css” que a su vez contiene los códigos comentados para esta técnica.</p>
<p>De esta forma: </p>
<ul>
<li>No obligamos a que se interprete código propietario (no estándar) como el filtro <strong>AlphaImageLoader</strong> por parte de otro navegador que no sea <acronym title="Internet Explorer 6" xml:lang="en">IE6</acronym> o inferior.</li>
<li>El sitio Web será estándar y válido según el <acronym title="World Wide Web Consortium" xml:lang="en">W3C</acronym> &#8211; <a href="http://validator.w3.org/">Validator</a>.</li>
<li>Reducimos el código <acronym title="Cascading Style Sheets" xml:lang="en">CSS</acronym> innecesario para otros navegadores y con ello logramos una <a href="http://aurea.es/2010/03/10/optimizar-css-12-consejos-y-3-herramientas/">mejor optimización</a>.</li>
</ul>]]></content:encoded>
			<wfw:commentRss>http://aurea.es/2010/07/09/png-transparente-e-ie-el-mitico-problema/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Texto alternativo (alt) en casos especiales</title>
		<link>http://aurea.es/2010/07/01/texto-alternativo-alt-en-casos-especiales/</link>
		<comments>http://aurea.es/2010/07/01/texto-alternativo-alt-en-casos-especiales/#comments</comments>
		<pubDate>Thu, 01 Jul 2010 06:29:00 +0000</pubDate>
		<dc:creator>javiaurea</dc:creator>
				<category><![CDATA[Accesibilidad]]></category>
		<category><![CDATA[alt]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[img]]></category>

		<guid isPermaLink="false">http://aurea.es/?p=5224</guid>
		<description><![CDATA[El atributo alt de una imagen u otro elemento debe proporcionar un texto alternativo que contenga la información que se pretendía transmitir. No olvidemos que la información textual es la de mayor grado de accesibilidad. Usar textos alternativos lógicos y coherentes Si la imagen contiene texto, por ejemplo un número de teléfono, debemos transmitirlo completamente, [...]]]></description>
			<content:encoded><![CDATA[<p>El atributo <code>alt</code> de una imagen u otro elemento debe proporcionar un <em>texto alternativo</em> que contenga la información que se pretendía transmitir. No olvidemos que la información textual es la de mayor grado de accesibilidad.</p>
<h3>Usar textos alternativos lógicos y coherentes</h3>
<ul>
<li>Si la imagen contiene texto, por ejemplo un número de teléfono, debemos transmitirlo completamente, <code>alt="Teléfono: 000 000 000"</code>.</li>
<li>Si la imagen es un icono de error, el texto debe transmitir esa misma idea, podemos usar simplemente <code>alt="error"</code>.</li>
<li>Si se trata de un icono &#8220;ZIP&#8221;, podemos usar algo como <code>alt="fichero comprimido en ZIP"</code>.</li>
<li>En el caso de una fotografía podemos describir lo que vemos, <code>alt="Asturias, tierra de altas montañas"</code>.</li>
<li>Si la imagen transmite acción, por ejemplo un enlace que tenga un icono de una impresora, debemos indicar dicha acción y no la descripción del icono, <code>alt="imprimir"</code>.</li>
<li>Si una imagen transmite lo mismo que un texto contiguo, debemos dejar el texto alternativo vació para no caer en redundancias, <code>alt=""</code>.</li>
</ul>
<h3>Las votaciones</h3>
<p>Supongamos que tenemos el clásico sistema de votaciones con estrellas:<br />
<img src="http://aurea.es/wp-content/uploads/stars.png" alt="puntuación 4 de 5"  /></p>
<p>Siguiendo las directrices de <a href="http://www.w3.org/TR/WCAG20/">WCAG2</a> lo que podemos hacer es usar el atributo <code>alt</code> de la primera imagen para describir a todo el grupo e indicar la puntuación global. El resto de las imágenes que deberían estar situadas de forma contigua, tienen que tener <code>alt=""</code> vacio y no llevar ningún <code>title</code>, de esta forma son obviadas. Con ello se consigue que las ayudas técnicas (como por ejemplo lectores de pantalla) únicamente &#8220;lean&#8221; el texto alternativo de la primera imagen donde se da toda la información necesaria al usuario.</p>
<h4>Ejemplo</h4>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">&lt;img src=&quot;star1.png&quot; alt=&quot;puntuación 4 de 5&quot; /&gt;
&lt;img src=&quot;star2.png&quot; alt=&quot;&quot; /&gt;
&lt;img src=&quot;star3.png&quot; alt=&quot;&quot; /&gt;
&lt;img src=&quot;star4.png&quot; alt=&quot;&quot; /&gt;
&lt;img src=&quot;star5.png&quot; alt=&quot;&quot; /&gt;</pre></div></div>

<h3>Los emoticonos</h3>
<p>Se tiene que transmitir de forma textual el mismo sentimiento que el representado. Por ejemplo: <img src="http://aurea.es/wp-includes/images/smilies/icon_smile.gif" alt="Feliz" /> <code>alt="Feliz"</code>.</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">&lt;img src=&quot;http://aurea.es/wp-includes/images/smilies/icon_smile.gif&quot; alt=&quot;Feliz&quot; /&gt;</pre></div></div>

<p>Supongamos que en vez de una imagen usamos texto (<acronym title="American Standard Code for Information Interchange" xml:lang="en">ASCII</acronym>). En este caso podemos marcar los emoticonos como abreviaturas (semánticamente podrían ser considerados así) y con el atributo <code>title="sentimiento"</code><br />
Por ejemplo: <abbr title="Feliz"> <img src='http://aurea.es/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </abbr></p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">&lt;abbr title=&quot;Feliz&quot;&gt;:-)&lt;/abbr&gt;</pre></div></div>
]]></content:encoded>
			<wfw:commentRss>http://aurea.es/2010/07/01/texto-alternativo-alt-en-casos-especiales/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

