<?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>Dave Ruiz Blog &#187; javascript</title>
	<atom:link href="http://blog.daveruiz.net/tag/javascript/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.daveruiz.net</link>
	<description>Freelance Web Developer</description>
	<lastBuildDate>Sat, 21 Jan 2012 12:24:04 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Javascript: Cuando onload no es lanzado (actualizado)</title>
		<link>http://blog.daveruiz.net/programacion/cuando-onload-no-es-lanzado/</link>
		<comments>http://blog.daveruiz.net/programacion/cuando-onload-no-es-lanzado/#comments</comments>
		<pubDate>Tue, 11 Aug 2009 22:10:30 +0000</pubDate>
		<dc:creator>Dave Ruiz</dc:creator>
				<category><![CDATA[Programación]]></category>
		<category><![CDATA[complete]]></category>
		<category><![CDATA[error]]></category>
		<category><![CDATA[ie]]></category>
		<category><![CDATA[internet explorer]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[onload]]></category>

		<guid isPermaLink="false">http://blog.daveruiz.net/?p=238</guid>
		<description><![CDATA[En ocasiones, ocurre que el evento onLoad, por ejemplo, de una imagen no es lanzado a la hora de cargar una página. Imaginemos que en el script de una página, una vez cargado el DOM, añadimos una función determinada cuando carga la imagen de cabecera: &#60;script type=&#34;text/javascript&#34;&#62; // Función que ejecutamos al cargar el DOM [...]]]></description>
			<content:encoded><![CDATA[<p>En ocasiones, ocurre que el evento <strong>onLoad</strong>, por ejemplo, de una imagen no es lanzado a la hora de cargar una página.</p>
<p>Imaginemos que en el script de una página, una vez cargado el DOM, añadimos una función determinada cuando carga la imagen de cabecera:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #339933;">&lt;</span>script type<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;text/javascript&quot;</span><span style="color: #339933;">&gt;</span>
  <span style="color: #006600; font-style: italic;">// Función que ejecutamos al cargar el DOM de la página</span>
  window.<span style="color: #000066;">onload</span> <span style="color: #339933;">=</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: #003366; font-weight: bold;">var</span> cabecera <span style="color: #339933;">=</span> document.<span style="color: #660066;">getElementById</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;cabecera&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #006600; font-style: italic;">// Funcion lanzada cuando carga la imagen 'cabecera'</span>
    cabecera.<span style="color: #000066;">onload</span> <span style="color: #339933;">=</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: #000066;">alert</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;carga completa&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
   <span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span>
  <span style="color: #009900;">&#125;</span>
<span style="color: #339933;">&lt;/</span>script<span style="color: #339933;">&gt;</span></pre></div></div>

<p>Nos encontraremos con que en algún navegador (por ejemplo, Internet Explorer) lanza la primera vez el evento, pero en las posteriores cargas este no es lanzado.</p>
<p>La razón es que, en la segunda carga, la imagen se encuentra cacheada y por tanto el navegador carga la imagen en cuanto inserta el elemento <em>IMG</em>, lanzando el correspondiente evento <em>onLoad</em>. Como en ese preciso momento todavía estamos cargando la estructura de la página y el evento no ha sido asignado (no se asigna hasta la carga completa de la estructura), cuando queremos asignarlo ya es demasiado tarde.</p>
<p><del datetime="2009-08-12T06:19:12+00:00">Otros navegadores como Mozilla Firefox no lanzan los eventos hasta que se ha completado la carga del DOM, haciendo inexistente este problema.</del></p>
<p>Una solución sencilla es comprobar, después de asignar el evento <em>onLoad </em>a la imagen, si esta ya se encuentra cargada complétamente. Nos serviremos del parámetro <strong>complete</strong>. Si nos devuelve <em>true</em>, lanzamos el evento <em>onLoad</em> manualmente.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #339933;">&lt;</span>script type<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;text/javascript&quot;</span><span style="color: #339933;">&gt;</span>
  <span style="color: #006600; font-style: italic;">// Función que ejecutamos al cargar el DOM de la página</span>
  window.<span style="color: #000066;">onload</span> <span style="color: #339933;">=</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: #003366; font-weight: bold;">var</span> cabecera <span style="color: #339933;">=</span> document.<span style="color: #660066;">getElementById</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;cabecera&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #006600; font-style: italic;">// Funcion lanzada cuando carga la imagen 'cabecera'</span>
    cabecera.<span style="color: #000066;">onload</span> <span style="color: #339933;">=</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: #000066;">alert</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;carga completa&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
    <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>cabecera.<span style="color: #660066;">complete</span> <span style="color: #339933;">==</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span> cabecera.<span style="color: #000066;">onload</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
<span style="color: #339933;">&lt;/</span>script<span style="color: #339933;">&gt;</span></pre></div></div>

<p><strong>Actualización:</strong></p>
<p>Me comenta Marc Palau (y con toda la razón) que el ejemplo anterior no es válido porque <em>onLoad</em> no es lanzado hasta que carga toda la página, incluidas las imágenes. En este caso, nunca seran llamados los eventos <em>onLoad</em> de las imágenes porque se están definiendo después de haberlas cargado.</p>
<p>Para reproducir el error, he preparado <a href="http://lab.daveruiz.net/jquery.problema_onload/">una prueba</a> en la que se testea el framework <strong>jQuery</strong> y la función <strong><a href="http://www.thefutureoftheweb.com/blog/adddomloadevent">addDOMLoadEvent</a></strong> (el ejemplo que ponen en el enlace añade la imagen dinámicamente y no lo reproduce). Del mismo modo, se presenta una solución para ambas basados en el mismo procedimiento comentado antes.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.daveruiz.net/programacion/cuando-onload-no-es-lanzado/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Resaltar automáticamente enlaces con jQuery</title>
		<link>http://blog.daveruiz.net/programacion/auto-marcado-de-enlaces-con-jquery/</link>
		<comments>http://blog.daveruiz.net/programacion/auto-marcado-de-enlaces-con-jquery/#comments</comments>
		<pubDate>Thu, 30 Jul 2009 09:27:25 +0000</pubDate>
		<dc:creator>Dave Ruiz</dc:creator>
				<category><![CDATA[Programación]]></category>
		<category><![CDATA[auto-highlight]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[marcado de enlaces]]></category>

		<guid isPermaLink="false">http://blog.daveruiz.net/?p=209</guid>
		<description><![CDATA[A modo de apunte, os dejo un método breve, usando jQuery, para resaltar los enlaces que apuntan a la página en la que nos encontramos. Muy útil, por ejemplo, para destacar en los menús la opción seleccionada automáticamente sin recurrir a PHP o a hacerlo manualmente: $&#40;document&#41;.ready&#40; function&#40;&#41; &#123; var loc = document.location.href.split&#40;/[\?#]/&#41;.shift&#40;&#41;.replace&#40;/\/$/, ''&#41;; &#160; [...]]]></description>
			<content:encoded><![CDATA[<p>A modo de apunte, os dejo un método breve, usando <a href="http://jquery.com/" target="_blank">jQuery</a>, para resaltar los enlaces que apuntan a la página en la que nos encontramos. Muy útil, por ejemplo, para destacar en los menús la opción seleccionada automáticamente sin recurrir a PHP o a hacerlo manualmente:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">$<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>
  <span style="color: #003366; font-weight: bold;">var</span> loc <span style="color: #339933;">=</span> document.<span style="color: #660066;">location</span>.<span style="color: #660066;">href</span>.<span style="color: #660066;">split</span><span style="color: #009900;">&#40;</span><span style="color: #009966; font-style: italic;">/[\?#]/</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">shift</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">replace</span><span style="color: #009900;">&#40;</span><span style="color: #009966; font-style: italic;">/\/$/</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">''</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;a&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">each</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: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">href</span> <span style="color: #339933;">==</span> loc<span style="color: #009900;">&#41;</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;">addClass</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;selected&quot;</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>
<span style="color: #009900;">&#125;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>El funcionamiento es muy simple. Recorre todos los elementos <strong>&lt;a&gt;</strong> de la página y compara el parámetro <strong>href</strong> con la url actual. Si coincide, añade la clase &#8216;<strong>selected</strong>&#8216; a dicho elemento. La clase &#8216;selected&#8217; deberá estar definida dentro de los estilos css de la página.</p>
<p>Un ejemplo <a href="http://lab.daveruiz.net/jquery.linkhighlight">aquí</a>.</p>
<p><strong>Actualización:</strong> Ahora no tiene en cuenta si la URL tiene barra al final o no (como en el caso de las carpetas)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.daveruiz.net/programacion/auto-marcado-de-enlaces-con-jquery/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Comparativa entre bucles Javascript</title>
		<link>http://blog.daveruiz.net/programacion/comparativa-entre-bucles-javascript/</link>
		<comments>http://blog.daveruiz.net/programacion/comparativa-entre-bucles-javascript/#comments</comments>
		<pubDate>Fri, 29 May 2009 14:38:48 +0000</pubDate>
		<dc:creator>Dave Ruiz</dc:creator>
				<category><![CDATA[Programación]]></category>
		<category><![CDATA[bucles]]></category>
		<category><![CDATA[comparativa]]></category>
		<category><![CDATA[for]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[while]]></category>

		<guid isPermaLink="false">http://blog.daveruiz.net/?p=184</guid>
		<description><![CDATA[Extendiendo el artículo original de aNieto2k, &#8220;for reverso para grandes interaciones en Javascript&#8220;, he modificado el test que ha creado para realizar una comparativa entre los bucles for y while, sumando o restando valores e incrementándolo mediante las formas i++ y ++i. En este caso, he fijado el número de iteraciones a 5.000.000. El resultado: [...]]]></description>
			<content:encoded><![CDATA[<p>Extendiendo el artículo original de <a href="http://www.anieto2k.com">aNieto2k</a>, <strong><a title="Enlace a for reverso para grandes interaciones en Javascript" rel="bookmark" href="http://www.anieto2k.com/2009/05/28/for-reverso-para-grandes-interaciones-en-javascript/">&#8220;for reverso para grandes interaciones en Javascript</a></strong>&#8220;, he modificado el test que ha creado para realizar una comparativa entre los bucles<em> for</em> y <em>while</em>, sumando o restando valores e incrementándolo mediante las formas <em>i++</em> y <em>++i</em>. En este caso, he fijado el número de iteraciones a 5.000.000.</p>
<p>El resultado: probadlo <a href="http://lab.daveruiz.net/test.comparativa-bucles/">vosotros mismos</a>. Yo obtuve los siguientes valores, con un Firefox 3.0.10:</p>
<blockquote><p>[ for i++ ] tiempo: 246ms. (5000000 iteraciones)<br />
[ while i++ ] tiempo: 225ms. (5000000 iteraciones)<br />
[ for ++i ] tiempo: 247ms. (5000000 iteraciones)<br />
[ while ++i ] tiempo: 221ms. (5000000 iteraciones)<br />
[ for i-- ] tiempo: 229ms. (5000000 iteraciones)<br />
[ while i-- ] tiempo: 213ms. (5000000 iteraciones)<br />
[ for --i ] tiempo: 221ms. (5000000 iteraciones)<br />
[ while --i ] tiempo: 212ms. (5000000 iteraciones)</p></blockquote>
<p>Según estos resultados, en Javascript al menos, daría prácticamente igual emplear la forma i++ e ++i. El ganador, un <em><strong>while &#8212; </strong></em>por goleada <img src='http://blog.daveruiz.net/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> .</p>
<p>Actualización: Acabo de probarlo en IE7, y salta una advertencia de que un script puede estar ralentizando la web (¡si la espera no llega a medio segundo!). Dicha advertencia falsea los tiempos de todas las pruebas (hasta que no pulsas &#8216;aceptar&#8217; no para de correr el tiempo), así recomiendo ejecutarla en cualquier otro navegador. Por cierto, ¡¡impresionante cómo va el <a href="http://www.google.com/chrome/">Chrome 2</a>!!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.daveruiz.net/programacion/comparativa-entre-bucles-javascript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CSS3 round borders por doquier</title>
		<link>http://blog.daveruiz.net/programacion/css3-round-borders-po-doquier/</link>
		<comments>http://blog.daveruiz.net/programacion/css3-round-borders-po-doquier/#comments</comments>
		<pubDate>Thu, 02 Apr 2009 15:22:51 +0000</pubDate>
		<dc:creator>Dave Ruiz</dc:creator>
				<category><![CDATA[Experimentos]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[borders]]></category>
		<category><![CDATA[css3]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[round]]></category>

		<guid isPermaLink="false">http://blog.daveruiz.net/?p=153</guid>
		<description><![CDATA[Mientras llega o no la revisión de CSS Level3 ¿Como quedarán mis páginas favoritas con bordes redondeados? javascript:function a&#40;c&#41; &#123; j=document.getElementsByTagName&#40;&#34;*&#34;&#41;; for &#40;i in j&#41; &#123; if&#40;j&#91;i&#93;.style&#41; j&#91;i&#93;.style.WebkitBorderRadius=j&#91;i&#93;.style.MozBorderRadius=c+&#34;px&#34;; &#125; &#125;;a&#40;15&#41; Y un ejemplo de cómo queda: Qué cuco queda youtube]]></description>
			<content:encoded><![CDATA[<p>Mientras llega o no la revisión de <a title="W3C - CSS3" href="http://www.w3.org/TR/css3-roadmap/" target="_blank">CSS Level3</a> ¿Como quedarán mis páginas favoritas con bordes redondeados?</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">javascript<span style="color: #339933;">:</span><span style="color: #003366; font-weight: bold;">function</span> a<span style="color: #009900;">&#40;</span>c<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> j<span style="color: #339933;">=</span>document.<span style="color: #660066;">getElementsByTagName</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;*&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000066; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span>i <span style="color: #000066; font-weight: bold;">in</span> j<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>j<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span>.<span style="color: #660066;">style</span><span style="color: #009900;">&#41;</span> j<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span>.<span style="color: #660066;">style</span>.<span style="color: #660066;">WebkitBorderRadius</span><span style="color: #339933;">=</span>j<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span>.<span style="color: #660066;">style</span>.<span style="color: #660066;">MozBorderRadius</span><span style="color: #339933;">=</span>c<span style="color: #339933;">+</span><span style="color: #3366CC;">&quot;px&quot;</span><span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span> <span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>a<span style="color: #009900;">&#40;</span><span style="color: #CC0000;">15</span><span style="color: #009900;">&#41;</span></pre></div></div>

<p style="text-align: center;"><a title="Aplicar bordes redondeados" href="javascript:function a(c) { j=document.getElementsByTagName('*'); for (i in j) { if(j[i].style) j[i].style.WebkitBorderRadius=j[i].style.MozBorderRadius=c+'px'; } };a(15)"><img class="size-full wp-image-222 aligncenter no-shadow" title="Aplicar bordes redondeados" src="http://blog.daveruiz.net/wp-content/uploads/favoritos.png" alt="Aplicar bordes redondeados" width="220" height="47" /></a></p>
<p>Y un ejemplo de cómo queda:</p>
<p style="text-align: center;"><a href="http://www.w3.org"><img class="size-full wp-image-170 aligncenter" title="Ejemplo de border-radius sobre w3.org" src="http://blog.daveruiz.net/wp-content/uploads/w3c.jpg" alt="Ejemplo de border-radius sobre w3.org" width="400" height="206" /></a></p>
<p style="text-align: left;">Qué cuco queda youtube <img src='http://blog.daveruiz.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p style="text-align: center;"><a href="http://www.youtube.com"><img class="size-full wp-image-174 aligncenter" title="Ejemplo de border-radius sobre youtube.com" src="http://blog.daveruiz.net/wp-content/uploads/youtube_rounded.jpg" alt="Youtube.com con bordes redondeados" width="400" height="169" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.daveruiz.net/programacion/css3-round-borders-po-doquier/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fuentes no estandar en tu web con jQuery</title>
		<link>http://blog.daveruiz.net/programacion/fuentes-no-estandar-en-tu-web-con-jquery/</link>
		<comments>http://blog.daveruiz.net/programacion/fuentes-no-estandar-en-tu-web-con-jquery/#comments</comments>
		<pubDate>Tue, 10 Feb 2009 09:43:29 +0000</pubDate>
		<dc:creator>Dave Ruiz</dc:creator>
				<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[estandar]]></category>
		<category><![CDATA[fuentes]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[replacefonts]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://blog.daveruiz.net/?p=103</guid>
		<description><![CDATA[Se trata de un código no intrusivo y accesible que símplemente sustituye el contenido de una selección por una imagen a base de tocar la hoja de estilos. Para que funcione corréctamente necesitaremos la ayuda de jQuery y, evidentemente, tener instalada la fuente que queremos representar (solo en tu equipo). La técnica consta de los [...]]]></description>
			<content:encoded><![CDATA[<p>Se trata de un código no intrusivo y accesible que símplemente sustituye el contenido de una selección por una imagen a base de tocar la hoja de estilos.</p>
<p>Para que funcione corréctamente necesitaremos la ayuda de <a title="jQuery" href="http://jquery.com/" target="_blank">jQuery</a> y, evidentemente, <strong>tener instalada la fuente que queremos representar</strong> (solo en tu equipo). La técnica consta de los siguientes pasos:</p>
<ol>
<li>Incluir en la cabecera el script en cuestión:
<pre>&lt;script type="text/javascript" src="jquery.js"&gt;&lt;/script&gt;
&lt;script type="text/javascript" src="jquery.replacefonts.js"&gt;&lt;/script&gt;</pre>
</li>
<li>Llamar a la función con el selector que nosotros deseemos. Para este ejemplo tomaremos todos los contenedores con la clase &#8220;titulo&#8221;:
<pre>&lt;script type="text/javascript"&gt;&lt;!--
   $(".titulo").replacefonts();
--&gt;&lt;/script&gt;</pre>
</li>
<p>Ya tenemos el script funcionando, pero nos falta crear las imágenes que contienen los textos. Para ello emplearemos cualquier editor de imágenes sencillo (creo que vale hasta el mismísimo paint) y la función de capturar pantalla del sistema. Continuamos con los siguientes pasos:</p>
<li>Abrimos la página que estamos modificando con el explorador, pero añadiéndole al final de la URL lo siguiente: <em>#dev</em>. Esto hará que se muestre un recuadro rojo alrededor de los elementos de la clase &#8220;titulo&#8221; que no han cargado imagen, facilitando así la tarea de recorte.
<p align="center"><a href="http://blog.daveruiz.net/wp-content/uploads/recorte1.jpg"><img class="aligncenter size-medium wp-image-116" title="Area de recorte" src="http://blog.daveruiz.net/wp-content/uploads/recorte1-300x96.jpg" alt="" width="300" height="96" /></a></p>
</li>
<li>Una vez hechas todas las capturas las guardamos. Por defecto el script va a buscar las imagenes a la carpeta <em>img/titles/</em> y con extensión <em>.gif</em>. Esto <span style="text-decoration: underline;">se puede modificar en las primeras lineas del script</span>. Y respecto al <strong>nombre </strong>que se ha de poner, si el elemento tiene el <strong>atríbuto ID</strong> lo empleará para generar el nombre, de lo contrario generará un nombre <strong>a partir del texto del contenido</strong> empleando solo las <span style="text-decoration: underline;">letras en minúsculas</span>. Por ejemplo:
<pre>HOTEL RESERVATION / Registration Deadline: 31/12/2010</pre>
<p>pasaría a ser:</p>
<pre>hotelreservationregistrationdeadline31122010.gif</pre>
</li>
</ol>
<p>Y esto es todo. Ventajas veo al usar este método:</p>
<ul>
<li>Si no esta habilitado javascript simplemente te deja el texto con la siguiente fuente disponible.</li>
<li>La edición de imagenes se limita a capturar y recortar el area señalada en rojo, sin tener que reescribir todos los textos.</li>
<li>Vemos realmente cómo va a quedar en la página antes de crear la imagen.</li>
<li>Usando los nombres generados automáticamente, al cambiar el contenido del texto cambia la imagen. Así prevenimos que el texto real no coincida con el de la imagen.</li>
</ul>
<p><strong>Actualización: </strong>Más tarde encuentro este enlace: <a href="http://www.disenorama.com/articulos/reemplazo-de-textos-una-comparacion" target="_blank">http://www.disenorama.com/articulos/reemplazo-de-textos-una-comparacion</a>, donde explican varios métodos, pros y contras para realizar esto mismo. Como siempre, es muy difícil innovar en estas cosas. <img src='http://blog.daveruiz.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><strong>Actualización: </strong>He actualizado el código. Ahora detecta si la fuente está instalada (gracias al código de<a title="Lalit lab" href="http://www.lalit.org/lab/javascript-css-font-detect" target="_blank"> Lalit</a>) y no hace nada en caso afirmativo. Además, si el elemento a sustituir es un contenedor de enlace <em>&lt;A&gt;</em> para el evento mouseover establece la imagen con el mismo nombre acabado en &#8216;_hover&#8217;, simulando la pseudoclase :hover.</p>
<p>[Descarga: <a title="Descarga jquery.replacefonts.js" href="http://lab.daveruiz.net/jquery.replacefonts/jquery.replacefonts.js" target="_blank">http://lab.daveruiz.net/jquery.replacefonts/jquery.replacefonts.js</a>]</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.daveruiz.net/programacion/fuentes-no-estandar-en-tu-web-con-jquery/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JSPopViewer, visor de imágenes javascript</title>
		<link>http://blog.daveruiz.net/programacion/popviewer-visor-de-imagenes-javascript/</link>
		<comments>http://blog.daveruiz.net/programacion/popviewer-visor-de-imagenes-javascript/#comments</comments>
		<pubDate>Thu, 03 Apr 2008 12:03:33 +0000</pubDate>
		<dc:creator>Dave Ruiz</dc:creator>
				<category><![CDATA[Programación]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[popview]]></category>
		<category><![CDATA[visor de imágenes]]></category>

		<guid isPermaLink="false">http://blog.daveruiz.net/programacion/popviewer-visor-de-imagenes-javascript/</guid>
		<description><![CDATA[Quiero compartir algo de cosecha propia, JSPopViewer, que es un sencillísimo visor de imágenes escrito en javascript. Podéis visitar la página de ejemplo y descargaros el código desde allí. Muy fácil de implementar. De momento símplemente funciona y está probado en IE6, IE7, Firefox y Safari. Sé que no va en Opera. Ya tendré tiempo [...]]]></description>
			<content:encoded><![CDATA[<p>Quiero compartir algo de cosecha propia, JSPopViewer, que es un sencillísimo visor de imágenes escrito en javascript. Podéis visitar la <a title="PopViewer" href="http://lab.daveruiz.net/webapp.jspopviewer" target="_blank">página de ejemplo</a> y descargaros el código desde allí. Muy fácil de implementar.</p>
<p>De momento símplemente funciona y está probado en IE6, IE7, Firefox y Safari. Sé que no va en Opera. Ya tendré tiempo de mejorarlo, tengo unas cuantas ideas en la cabeza.</p>
<p>Se trata de la primera &#8216;aplicación&#8217; javascript que publico, así que estoy abierto a sugerencias de todo tipo.  <img src='http://blog.daveruiz.net/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p><strong>Actualización 10/03/2011</strong>: Disponible una nueva versión, que arregla algunos fallos y añade alguna característica nueva.</p>
<p>[<a title="PopViewer" href="http://lab.daveruiz.net/webapp.jspopviewer" target="_blank">Descarga</a>]</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.daveruiz.net/programacion/popviewer-visor-de-imagenes-javascript/feed/</wfw:commentRss>
		<slash:comments>20</slash:comments>
		</item>
	</channel>
</rss>

