<?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>Juan Benavides &#187; javascript</title>
	<atom:link href="http://juanbenavides.info/tag/javascript/feed/" rel="self" type="application/rss+xml" />
	<link>http://juanbenavides.info</link>
	<description>Anotaciones de un Geek</description>
	<lastBuildDate>Fri, 20 Aug 2010 16:08:20 +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>Referencia Rápida de Mootools 1.2.x</title>
		<link>http://juanbenavides.info/referencia-rapida-de-mootools-12x/2009/04/</link>
		<comments>http://juanbenavides.info/referencia-rapida-de-mootools-12x/2009/04/#comments</comments>
		<pubDate>Sun, 05 Apr 2009 22:03:34 +0000</pubDate>
		<dc:creator>Juan Benavides</dc:creator>
				<category><![CDATA[Programación]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[mootools]]></category>

		<guid isPermaLink="false">http://juanbenavides.info/?p=177</guid>
		<description><![CDATA[Leyendo varios blogs he acabado en uno muy bueno con 14 hojas de referencia rápida para diseño web, de entre las que destacan esta hoja de CSS y la hoja de Mootools 2.1. En cualquier caso recomiendo que, si estas empezando con Mootools, te bajes una versión del framework sin compresión y con comentarios. No [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://juanbenavides.info/wp-content/uploads/2009/04/mootools-cheat-sheet-demo.jpg" alt="mootools-cheat-sheet-demo" title="mootools-cheat-sheet-demo" width="700" height="300" class="alignnone size-full wp-image-178" /></p>
<p>Leyendo varios blogs he acabado en uno muy bueno con <a href="http://delimitdesign.com/design/14-incredibly-useful-web-design-cheat-sheets/">14 hojas de referencia rápida para diseño web</a>, de entre las que destacan <a href="http://www.webtutoriales.com/tutoriales/html-css/hoja-referencia-css.26.html">esta hoja de CSS</a> y <a href="http://mediavrog.net/blog/2008/06/11/mootools/mootools-12-cheat-sheet/">la hoja de Mootools 2.1</a>.</p>
<p>En cualquier caso recomiendo que, si estas empezando con <a href="http://mootools.net/">Mootools</a>, te bajes una versión del framework sin compresión y con comentarios. <strong>No le tengas miedo al código del framework</strong>, está tan bien escrito que es como leer poesía en la programación. Gracias a sus estandares, podemos consultar el código -que es perfectamente entendible- y aprender mucho para desarrollar nuestras aplicaciones.</p>
]]></content:encoded>
			<wfw:commentRss>http://juanbenavides.info/referencia-rapida-de-mootools-12x/2009/04/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Interceptando la salida accidental del usuario</title>
		<link>http://juanbenavides.info/interceptando-la-salida-accidental-del-usuario/2009/02/</link>
		<comments>http://juanbenavides.info/interceptando-la-salida-accidental-del-usuario/2009/02/#comments</comments>
		<pubDate>Mon, 09 Feb 2009 15:39:14 +0000</pubDate>
		<dc:creator>Juan Benavides</dc:creator>
				<category><![CDATA[Programación]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[mootools]]></category>

		<guid isPermaLink="false">http://juanbenavides.info/?p=143</guid>
		<description><![CDATA[El problema (y lo detecte gracias a mi madre :P), es, ¿y que si el usuario presiona F5 cuando va a la mitad de un enorme formulario? No es culpa del usuario, pero incluso cuando me pasa a mi, me da tanto coraje perder lo que había llenado por tan tremenda tontería, que se me [...]]]></description>
			<content:encoded><![CDATA[<p>El problema (y lo detecte gracias a mi madre :P), es, ¿y que si el usuario presiona F5 cuando va a la mitad de un enorme formulario? No es culpa del usuario, pero incluso cuando me pasa a mi, me da tanto coraje perder lo que había llenado por tan tremenda tontería, que se me quitan las ganas de volverlo a intentar.</p>
<p>No queda opción, hay que interceptar cuando el usuario presiona ciertas teclas en ciertos lugares. Por suerte, fue muy fácil hacerlo. Para <strong>Mootools</strong> el script sería así:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">window.<span style="color: #660066;">addEvent</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'domready'</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>
&nbsp;
	<span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>$$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'div.no-f5'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">length</span> <span style="color: #339933;">&gt;</span> <span style="color: #CC0000;">0</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
		document.<span style="color: #660066;">addEvent</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'keydown'</span><span style="color: #339933;">,</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>event<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
&nbsp;
			<span style="color: #003366; font-weight: bold;">var</span> tag <span style="color: #339933;">=</span> event.<span style="color: #660066;">target</span>.<span style="color: #660066;">tagName</span>.<span style="color: #660066;">toLowerCase</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
			<span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>event.<span style="color: #660066;">key</span><span style="color: #339933;">==</span><span style="color: #3366CC;">'f5'</span> <span style="color: #339933;">||</span> <span style="color: #009900;">&#40;</span>event.<span style="color: #660066;">key</span><span style="color: #339933;">==</span><span style="color: #3366CC;">'backspace'</span> <span style="color: #339933;">&amp;&amp;</span> tag<span style="color: #339933;">!=</span><span style="color: #3366CC;">'input'</span> <span style="color: #339933;">&amp;&amp;</span> tag<span style="color: #339933;">!=</span><span style="color: #3366CC;">'textarea'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
				event.<span style="color: #000066;">stop</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: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Revisamos si existe un <code>div.no-f5</code>, que no es más que una <em>clase bandera</em>, para saber si en esa pantalla necesitaré del script. Si procede, creo el evento <em>keydown</em> para el documento. Cuando el evento suceda, comprobamos a que elemento se está <em>apuntando</em>, pues no queremos interceptar el <em>backspace</em> cuando el usuario esta escribiendo en algún campo de texto, pero si en cualquier otro caso pues lo regresaría a la pantalla anterior. La tecla <em>F5</em> la interceptamos en todo momento.</p>
<p>Al mismo tiempo, descubrí (todo por no leer en su momento), que <em>Mootols</em> no extiende el objeto <code>event.target</code> con <code>$</code>, por razones de rendimiento. Así que si los chicos de Moo tuvieron buenas razones, decidí no extenderlo aunque hacer un <code>$(event.target).get('tag')</code> era muy tentador&#8230; pero hacerlo con Javascript nativo es muy fácil y <em>cross browser</em>.</p>
<p>Tanto el problema como la solución son detalles muy simples y normalmente subestimadas, pero seguro salvas a algún usuario de que se arranque el cabello mientras llenaba un enorme formulario.</p>
]]></content:encoded>
			<wfw:commentRss>http://juanbenavides.info/interceptando-la-salida-accidental-del-usuario/2009/02/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mootools 1.2.1 terminado y disponible.</title>
		<link>http://juanbenavides.info/mootools-121-terminado-y-disponible/2008/10/</link>
		<comments>http://juanbenavides.info/mootools-121-terminado-y-disponible/2008/10/#comments</comments>
		<pubDate>Sat, 18 Oct 2008 02:44:08 +0000</pubDate>
		<dc:creator>Juan Benavides</dc:creator>
				<category><![CDATA[Programación]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[mootools]]></category>

		<guid isPermaLink="false">http://juanbenavides.info/?p=59</guid>
		<description><![CDATA[Siempre le he sido fiel a este framework para Javascript, y ahora que salió la Mootools v1.2.1 me da gusto y me parece estupendo que avancen, aunque ésta vez solo sea una ligera lista de cambios. Últimamente he tenido que aprender algo de Prototype y Script.aculo.us para unos proyectos y no me convencen aún, al [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-63" title="mootools" src="http://juanbenavides.info/wp-content/uploads/2008/10/mootools.jpg" alt="Mootools" /></p>
<p>Siempre le he sido fiel a este framework para Javascript, y ahora que salió la <a href="http://mootools.net/blog/2008/10/16/mootools-121-released/">Mootools v1.2.1</a> me da gusto y me parece estupendo que avancen, aunque ésta vez solo sea una <a href="http://github.com/mootools/mootools-core/tree/1.2.1/CHANGELOG">ligera lista de cambios</a>.</p>
<p>Últimamente he tenido que aprender algo de <a href="http://www.prototypejs.org/">Prototype</a> y <a href="http://script.aculo.us/">Script.aculo.us</a> para unos proyectos y no me convencen aún, al igual que pasó con <a href="http://jquery.com/">JQuery</a> cuando lo utilicé. Espero poder aprender más de ellos y en el futuro, quizá pueda hacer alguna crítica, comparación, lo que sea&#8230; por el momento, a disfrutar de <strong>Mootools</strong> :)</p>
]]></content:encoded>
			<wfw:commentRss>http://juanbenavides.info/mootools-121-terminado-y-disponible/2008/10/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Protegiento enlaces a correos del spam.</title>
		<link>http://juanbenavides.info/protegiento-enlaces-a-correos/2008/09/</link>
		<comments>http://juanbenavides.info/protegiento-enlaces-a-correos/2008/09/#comments</comments>
		<pubDate>Mon, 15 Sep 2008 06:36:37 +0000</pubDate>
		<dc:creator>Juan Benavides</dc:creator>
				<category><![CDATA[Programación]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[mootools]]></category>

		<guid isPermaLink="false">http://blog.juanbenavides.info/?p=30</guid>
		<description><![CDATA[Nada es más fácil que poner un enlace a tu correo en tu blog, para que el visitante interesado de click y se ejecute el cliente de correo preferido del usuario. Lamentablemente, hacer esto: correo@dominio.com con nuestro email es peligroso, por que existe gente que se dedica a buscar correos en internet y a llenarlos [...]]]></description>
			<content:encoded><![CDATA[<p>Nada es más fácil que poner un enlace a tu correo en tu blog, para que el visitante interesado de click y se ejecute el cliente de correo preferido del usuario. Lamentablemente, hacer esto: <a href="mailto:correo@dominio.com">correo@dominio.com</a> con nuestro email es peligroso, por que existe gente que se dedica a buscar correos en internet y a llenarlos de basura en poco tiempo.</p>
<p>Pensando en alternativas para mantener la accesibilidad de un correo electrónico y al mismo tiempo, mantenerlo oculto de los <em title="Programas que raestrean en internet correos para enviarles spam">spambots</em>, me han surgido muchas ideas, mi favorita es ésta:</p>
<p> Suponiendo que los <em>spambots</em> no ejecutan javascript, usaremos mootools para desarrollar un script muy sencillo que logrará mantener oculto el correo, pero que tendrá esa accesibilidad indispensable. </p>
<p>Primero, el código HTML. Publicamos los correos con ésta sintaxis:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&lt;</span>span <span style="color: #000000; font-weight: bold;">class</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;email&quot;</span><span style="color: #339933;">&gt;</span>correo <span style="color: #009900;">&#40;</span>de dominio<span style="color: #339933;">.</span>com<span style="color: #009900;">&#41;</span><span style="color: #339933;">&lt;/</span>span<span style="color: #339933;">&gt;</span></pre></div></div>

<p>Es poco técnico, pero en caso de que el script no se ejecute (por la razón que sea), seguirá legible para el usuario humano. Es importante mantener esa &#8220;forma&#8221; para el script de Mootools, el cual sería algo así:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">$$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'.email'</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>e<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #003366; font-weight: bold;">var</span> text <span style="color: #339933;">=</span> e.<span style="color: #660066;">get</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'text'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">split</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">' '</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #003366; font-weight: bold;">var</span> email <span style="color: #339933;">=</span> text<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">+</span> <span style="color: #3366CC;">'@'</span> <span style="color: #339933;">+</span> text<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">2</span><span style="color: #009900;">&#93;</span>.<span style="color: #660066;">replace</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">')'</span><span style="color: #339933;">,</span><span style="color: #3366CC;">''</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #003366; font-weight: bold;">new</span> Element<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'a'</span><span style="color: #339933;">,</span> <span style="color: #009900;">&#123;</span><span style="color: #3366CC;">'href'</span> <span style="color: #339933;">:</span> <span style="color: #3366CC;">'mailto:'</span> <span style="color: #339933;">+</span> email<span style="color: #339933;">,</span> <span style="color: #3366CC;">'text'</span> <span style="color: #339933;">:</span> email<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">replaces</span><span style="color: #009900;">&#40;</span>e<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 resultado será que cuando éste script se ejecute, reemplazará el original <em>span</em> por un <strong>enlace</strong> totalmente accesible para el usuario final:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&lt;</span>a href<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;mailto:correo@dominio.com&quot;</span><span style="color: #339933;">&gt;</span>correo<span style="color: #339933;">@</span>dominio<span style="color: #339933;">.</span>com<span style="color: #339933;">&lt;/</span>a<span style="color: #339933;">&gt;</span></pre></div></div>

<p>Sinceramente, se me ha ocurrido esta variación partiendo de la propuesta de <a href="http://davidwalsh.name/email-protection-mootools-javascript-v2">David Walsh</a>, mi versión es un poco diferente, pero creo que cumple el objetivo. </p>
<p>El propósito es que cuando un <em>spambot</em> éntre al sitio, no asócie esa sintaxis con la de un correo normal y no lo guarde en su base de datos. Pero cuando un usuario visita el sitio, su navegador interpretara el correo oculto gracias al script en Mootools, y todo funcionará sin que el usuario se de cuenta.</p>
]]></content:encoded>
			<wfw:commentRss>http://juanbenavides.info/protegiento-enlaces-a-correos/2008/09/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
