<?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>Boozox &#187; JavaScript</title>
	<atom:link href="http://boozox.net/category/javascript/feed/" rel="self" type="application/rss+xml" />
	<link>http://boozox.net</link>
	<description>Blog de informática, programación, software libre, linux, y mucho más</description>
	<lastBuildDate>Mon, 23 Aug 2010 11:53:12 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Reproductor mp3 flash ultraligero</title>
		<link>http://boozox.net/javascript/reproductor-mp3-flash-ultraligero/</link>
		<comments>http://boozox.net/javascript/reproductor-mp3-flash-ultraligero/#comments</comments>
		<pubDate>Wed, 29 Oct 2008 10:18:36 +0000</pubDate>
		<dc:creator>Alex Barros</dc:creator>
				<category><![CDATA[Aplicaciones]]></category>
		<category><![CDATA[Boozox]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[mp3]]></category>
		<category><![CDATA[reproductor]]></category>

		<guid isPermaLink="false">http://boozox.net/?p=525</guid>
		<description><![CDATA[Hoy voy a hacer un post ligerito. Ligerito como el reproductor flash de mp3 niftyPlayer.
Simplemente se trata de un reproductor de mp3, hecho con la tecnología flash, listo para integrarse en una web. Además podemos interactuar con él de forma muy sencilla via JavaScript.
Cómo usarlo
Una vez hayamos descargado los archivos necesarios, sólo hay que insertar [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://boozox.net/wp-content/imagen-11.png" style="float:right"/>Hoy voy a hacer un <strong>post ligerito</strong>. Ligerito como el <strong>reproductor flash de mp3 <a href="http://www.varal.org/media/niftyplayer/">niftyPlayer</a></strong>.</p>
<p>Simplemente se trata de un <strong>reproductor de mp3</strong>, hecho con la <strong>tecnología flash</strong>, listo para <strong>integrarse en una web</strong>. Además podemos interactuar con él de forma muy sencilla via <strong>JavaScript</strong>.</p>
<h2>Cómo usarlo</h2>
<p>Una vez hayamos <strong>descargado</strong> los <a href="http://www.varal.org/media/niftyplayer/niftyplayer.zip">archivos necesarios</a>, sólo hay que insertar este código en nuestro documento web:</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">&lt;object classid=&quot;clsid:D27CDB6E-AE6D-11cf-96B8-444553540000&quot; codebase=&quot;http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0&quot; width=&quot;165&quot; height=&quot;38&quot; id=&quot;niftyPlayer1&quot; align=&quot;&quot;&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &lt;param name=movie value=&quot;niftyplayer.swf?file=betty.mp3&amp;as=1&quot;&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &lt;param name=quality value=high&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &lt;param name=bgcolor value=#FFFFFF&gt;
</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &lt;embed src=&quot;niftyplayer.swf?file=betty.mp3&amp;as=1&quot; quality=high bgcolor=#FFFFFF width=&quot;165&quot; height=&quot;38&quot; name=&quot;niftyPlayer1&quot; align=&quot;&quot; type=&quot;application/x-shockwave-flash&quot; pluginspage=&quot;http://www.macromedia.com/go/getflashplayer&quot;&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &lt;/embed&gt;
</div>
</li>
<li class="li1">
<div class="de1">&lt;/object&gt;</div>
</li>
</ol>
</div>
<p>Lo único que tenemos que editar es, en la segunda fila, las variables GET <strong>file</strong> y <strong>as</strong>. &#8220;file&#8221; es el nombre del <strong>archivo .mp3</strong>, y as valdrá 1 si queremos que empiece a <strong>reproducir automáticamente</strong>, o 0 (cero) de lo contrario.</p>
<h2>Interacción JavaScript</h2>
<p>Es realmente sencillo. Lo primero de todo es incluir en la cabecera del documento HTML esta línea:</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">&lt;script type=&quot;text/javascript&quot; language=&quot;javascript&quot; src=&quot;niftyplayer.js&quot;&gt;&lt;/script&gt;</div>
</li>
</ol>
</div>
<p>Los <strong>métodos</strong> de que disponemos son los siguientes:</p>
<h3>Play Toggle</h3>
<p>Si el reproductor estaba en play, pasa a pause, y viceversa</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">niftyplayer<span class="br0">&#40;</span><span class="st0">&#8216;niftyPlayer1&#8242;</span><span class="br0">&#41;</span>.<span class="me1">playToggle</span><span class="br0">&#40;</span><span class="br0">&#41;</span></div>
</li>
</ol>
</div>
<p>O también Play y Pause por separado</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">niftyplayer<span class="br0">&#40;</span><span class="st0">&#8216;niftyPlayer1&#8242;</span><span class="br0">&#41;</span>.<span class="me1">play</span><span class="br0">&#40;</span><span class="br0">&#41;</span></div>
</li>
</ol>
</div>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">niftyplayer<span class="br0">&#40;</span><span class="st0">&#8216;niftyPlayer1&#8242;</span><span class="br0">&#41;</span>.<span class="me1">pause</span><span class="br0">&#40;</span><span class="br0">&#41;</span></div>
</li>
</ol>
</div>
<h3>Stop</h3>
<p>Detiene la canción y se va al principio</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">niftyplayer<span class="br0">&#40;</span><span class="st0">&#8216;niftyPlayer1&#8242;</span><span class="br0">&#41;</span>.<span class="kw3">stop</span><span class="br0">&#40;</span><span class="br0">&#41;</span></div>
</li>
</ol>
</div>
<h3>Cargar nuevo archivo mp3</h3>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">niftyplayer<span class="br0">&#40;</span><span class="st0">&#8216;niftyPlayer1&#8242;</span><span class="br0">&#41;</span>.<span class="me1">load</span><span class="br0">&#40;</span><span class="st0">&#8216;nombre_archivo.mp3&#8242;</span><span class="br0">&#41;</span></div>
</li>
</ol>
</div>
<p>Si queremos cargar, y a continuación empezar a reproducirlo:</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">niftyplayer<span class="br0">&#40;</span><span class="st0">&#8216;niftyPlayer1&#8242;</span><span class="br0">&#41;</span>.<span class="me1">loadAndPlay</span><span class="br0">&#40;</span><span class="st0">&#8216;nombre_archivo.mp3&#8242;</span><span class="br0">&#41;</span></div>
</li>
</ol>
</div>
<h3>Asociar eventos del reproductor</h3>
<p>Por ejemplo, asociamos una función nuestra al evento de comenzar la reproduccion (play)</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">niftyplayer<span class="br0">&#40;</span><span class="st0">&#8216;niftyPlayer1&#8242;</span><span class="br0">&#41;</span>.<span class="me1">registerEvent</span><span class="br0">&#40;</span><span class="st0">&#8216;onPlay&#8217;</span>, <span class="st0">&#8216;alert(<span class="es0">\&#8217;</span>Has pulsado play!<span class="es0">\&#8217;</span>)&#8217;</span><span class="br0">&#41;</span></div>
</li>
</ol>
</div>
<p>También contamos con los eventos <strong>onPause</strong> y <strong>onStop</strong></p>
<h3>Obtener estado del reproductor</h3>
<p>Devolverá un texto de entre &#8220;<strong>playing</strong>&#8220;, &#8220;<strong>stopped</strong>&#8221; y &#8220;<strong>paused</strong>&#8220;, dependiendo del estado del reproductor</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="kw3">alert</span><span class="br0">&#40;</span>niftyplayer<span class="br0">&#40;</span><span class="st0">&#8216;niftyPlayer1&#8242;</span><span class="br0">&#41;</span>.<span class="me1">getState</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span></div>
</li>
</ol>
</div>
<p><strong>Y eso es todo!</strong> Fácil, verdad? Qué te parece esta aplicación? La usarás? Para qué?<br />
Te espero en los <strong><a href="http://boozox.net/javascript/reproductor-mp3-flash-ultraligero/#comments">comentarios</a></strong>, ahí siempre hace buen clima n_n</p>
]]></content:encoded>
			<wfw:commentRss>http://boozox.net/javascript/reproductor-mp3-flash-ultraligero/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>La locura del JavaScript: Eventos de teclado</title>
		<link>http://boozox.net/web/la-locura-del-javascript-eventos-de-teclado/</link>
		<comments>http://boozox.net/web/la-locura-del-javascript-eventos-de-teclado/#comments</comments>
		<pubDate>Tue, 13 Nov 2007 21:10:58 +0000</pubDate>
		<dc:creator>Alex Barros</dc:creator>
				<category><![CDATA[Código]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://boozox.net/web/la-locura-del-javascript-eventos-de-teclado/</guid>
		<description><![CDATA[Trabajar en JavaScript ha tenido siempre una gran dificultad, y es que se trata de un lenguaje no estándar, interpretado por el cliente. Esto provoca desigualdades en los resultados, dependiendo sobretodo de los distintos navegadores, y sus respectivas versiones.
En el caso de los eventos de teclado este desmadre tiene un especial énfasis, y viene a [...]]]></description>
			<content:encoded><![CDATA[<p>Trabajar en JavaScript ha tenido siempre una gran dificultad, y es que se trata de un lenguaje no estándar, interpretado por el cliente. Esto provoca desigualdades en los resultados, dependiendo sobretodo de los distintos navegadores, y sus respectivas versiones.</p>
<p>En el caso de los eventos de teclado este desmadre tiene un especial énfasis, y viene a demostrarse en  <a href="http://unixpapa.com/js/key.html">este documento</a> (en inglés) que paso a resumiros.</p>
<h2>Eventos keyup keydown y keypress</h2>
<p>Estos eventos son disparados en momentos distintos, dependiendo del navegador. Por ejemplo el mantener pulsada la tecla &#8220;Alt&#8221;, o el pulsar un caracter durante varios segundos, producen resultados distintos en cuanto al disparo de eventos, en cada navegador.</p>
<h2>Interpretación de la tecla pulsada</h2>
<p>Llegados al punto de que el usuario ha pulsado una tecla, querremos saber cuál de ellas ha pulsado. Pues el resultado también difiere entre navegadores (como era de esperar).</p>
<p>Para complicarnos la vida a los programadores, la codificación es distinta entre los principales navegadores. Aúnque en los caracteres normales (numeros y letras) hay una cierta uniformidad, la diferenciación del lugar donde se pulsan los números (hay dos series de números en un teclado normal), y la mayoría de los signos, adquieren claves distintas que los identifican.</p>
<p><em>Echa un vistazo a la tabla de códigos más abajo.</em></p>
<h2>Tablas clarificadoras</h2>
<table border="1">
<tbody>
<tr class="d">
<td><em>Navegador</em></td>
<td><em>Eventos enviados cuando se pulsan teclas modificadoras (Alt, Ctrl, etc)</em></td>
</tr>
<tr>
<td>Gecko<br/>Internet Explorer</td>
<td><strong>keydown</strong><br/><strong>keyup</strong></td>
</tr>
<tr>
<td>Opera<br/>Konqueror</td>
<td><strong>keydown</strong><br/><strong>keypress</strong><br/><strong>keyup</strong></td>
</tr>
<tr>
<td>Safari<br/>iCab</td>
<td>ningún evento</td>
</tr>
</tbody>
</table>
<table border="1">
<tbody>
<tr class="d">
<td><em>Navegador</em></td>
<td><em>Eventos lanzados en cada autorepetición</em></td>
</tr>
<tr>
<td>Gecko (Linux) <br/>Gecko (Macintosh) <br/>Safari (Macintosh)<br/>Konqueror <br/>Opera <br/></td>
<td>sólo <strong>keypress</strong></td>
</tr>
<tr>
<td>Internet Explorer<br/>Gecko (Windows) <br/>Safari (Windows)</td>
<td><strong>keydown</strong><br/><strong>keypress</strong></td>
</tr>
<tr>
<td>iCab</td>
<td><strong>keyup</strong><br/><strong>keydown</strong><br/><strong>keypress</strong></td>
</tr>
</tbody>
</table>
<table border="1">
<tbody>
<tr class="d">
<th>Tecla</th>
<th>Mozilla</th>
<th>Internet Explorer</th>
<th>Opera</th>
<th>códigos pseudo ASCII</th>
</tr>
<tr>
<td bgcolor="#00ff00" align="center">Teclas alfabéticas</td>
<td align="center" colspan="4">Código <a href="http://es.wikipedia.org/wiki/American_Standard_Code_for_Information_Interchange">ASCII</a> de la letra en mayúscula</td>
</tr>
<tr>
<td bgcolor="#00ff00" align="center">[ Espacio ]</td>
<td align="center">32</td>
<td align="center">32</td>
<td align="center">32</td>
<td align="center">32</td>
</tr>
<tr>
<td bgcolor="#00ff00" align="center">[ Enter ]</td>
<td align="center">13</td>
<td align="center">13</td>
<td align="center">13</td>
<td align="center">13</td>
</tr>
<tr>
<td bgcolor="#00ff00" align="center">[ Tabulador ]</td>
<td align="center">9</td>
<td align="center">9</td>
<td align="center">9</td>
<td align="center">9</td>
</tr>
<tr>
<td bgcolor="#00ff00" align="center">[ Retroceder ]</td>
<td align="center">8</td>
<td align="center">8</td>
<td align="center">8</td>
<td align="center">8</td>
</tr>
<tr>
<td bgcolor="#00ff00" align="center">[ Shift ]</td>
<td align="center">16</td>
<td align="center">16</td>
<td align="center">16</td>
<td align="center">16</td>
</tr>
<tr>
<td bgcolor="#00ff00" align="center">[ Control ]</td>
<td align="center">17</td>
<td align="center">17</td>
<td align="center">17</td>
<td align="center">17</td>
</tr>
<tr>
<td bgcolor="#00ff00" align="center">[ Alt ]</td>
<td align="center">18</td>
<td align="center">18</td>
<td align="center">18</td>
<td align="center">18</td>
</tr>
<tr>
<td bgcolor="#00ff00" align="center">izquierda</td>
<td align="center">37</td>
<td align="center">37</td>
<td align="center">37</td>
<td align="center">37</td>
</tr>
<tr>
<td bgcolor="#00ff00" align="center">arriba</td>
<td align="center">38</td>
<td align="center">38</td>
<td align="center">38</td>
<td align="center">38</td>
</tr>
<tr>
<td bgcolor="#00ff00" align="center">derecha</td>
<td align="center">39</td>
<td align="center">39</td>
<td align="center">39</td>
<td align="center">39</td>
</tr>
<tr>
<td bgcolor="#00ff00" align="center">abajo</td>
<td align="center">40</td>
<td align="center">40</td>
<td align="center">40</td>
<td align="center">40</td>
</tr>
<tr>
<td bgcolor="#ffff00" align="center">Números en el teclado</td>
<td align="center" colspan="3">Código <a href="http://es.wikipedia.org/wiki/American_Standard_Code_for_Information_Interchange">ASCII</a> del número (48 más el número), aúnque esté pulsado un modificador</td>
<td valign="top" align="center">Código <a href="http://es.wikipedia.org/wiki/American_Standard_Code_for_Information_Interchange">ASCII</a> del caracter que será enviado.</td>
</tr>
<tr>
<td bgcolor="#ffff00" align="center">[ ; : ]</td>
<td align="center">59</td>
<td align="center">186</td>
<td align="center">59</td>
<td align="center">59 (unshifted) o 58 (shifted)</td>
</tr>
<tr>
<td bgcolor="#ffff00" align="center">[ = + ]</td>
<td align="center">61</td>
<td align="center">187</td>
<td align="center">61</td>
<td align="center">61 (unshifted) o 43 (shifted)</td>
</tr>
<tr>
<td bgcolor="#ffff00" align="center">[ , < ]</td>
<td align="center">188</td>
<td align="center">188</td>
<td align="center">44</td>
<td align="center">44 (unshifted) o 60 (shifted)</td>
</tr>
<tr>
<td bgcolor="#ffff00" align="center">[ - _ ]</td>
<td align="center">109</td>
<td align="center">189</td>
<td align="center">45</td>
<td align="center">45 (unshifted) o 95 (shifted)</td>
</tr>
<tr>
<td bgcolor="#ffff00" align="center">[ . > ]</td>
<td align="center">190</td>
<td align="center">190</td>
<td align="center">46</td>
<td align="center">46 (unshifted) o 62 (shifted)</td>
</tr>
<tr>
<td bgcolor="#ffff00" align="center">[ / ? ]</td>
<td align="center">191</td>
<td align="center">191</td>
<td align="center">47</td>
<td align="center">47 (unshifted) o 63 (shifted)</td>
</tr>
<tr>
<td bgcolor="#ffff00" align="center">[ ` ~ ]</td>
<td align="center">192</td>
<td align="center">192</td>
<td align="center">126</td>
<td align="center">126 (unshifted) o 96 (shifted)</td>
</tr>
<tr>
<td bgcolor="#ffff00" align="center">[ \ | ]</td>
<td align="center">220</td>
<td align="center">220</td>
<td align="center">92</td>
<td align="center">92 (unshifted) o 124 (shifted)</td>
</tr>
<tr>
<td bgcolor="#ffff00" align="center">[ ' " ]</td>
<td align="center">222</td>
<td align="center">222</td>
<td align="center">39</td>
<td align="center">39 (unshifted) o 34 (shifted)</td>
</tr>
<tr>
<td bgcolor="#ffff00" align="center">Números (teclado separado)</td>
<td align="center" colspan="2">96 más número</td>
<td align="center" colspan="2">48 más número (ASCII)</td>
</tr>
</tbody>
</table>
<p>Recomiendo leer la <a href="http://unixpapa.com/js/key.html">fuente original</a> (inglés).</p>
]]></content:encoded>
			<wfw:commentRss>http://boozox.net/web/la-locura-del-javascript-eventos-de-teclado/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Carga asíncrona de archivos JavaScript</title>
		<link>http://boozox.net/javascript/carga-asincrona-de-archivos-javascript/</link>
		<comments>http://boozox.net/javascript/carga-asincrona-de-archivos-javascript/#comments</comments>
		<pubDate>Mon, 15 Oct 2007 22:45:06 +0000</pubDate>
		<dc:creator>Alex Barros</dc:creator>
				<category><![CDATA[Código]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://boozox.net/javascript/carga-asincrona-de-archivos-javascript/</guid>
		<description><![CDATA[Me gustaría recalcar esta técnica, ya que según mi opinión no está valorada lo suficiente.
Se trata de la carga asíncrona de archivos Javascript, es decir, no cargar un archivo JavaScript hasta que lo necesite.
¿Cómo hago esto?
Es muy sencillo, una simple función puede facilitarte increíblemente el trabajo. Es la siguiente:



function include&#40;path&#41;&#123;


&#160; &#160; &#160; &#160; var j [...]]]></description>
			<content:encoded><![CDATA[<p>Me gustaría recalcar esta técnica, ya que según mi opinión no está valorada lo suficiente.</p>
<p>Se trata de la <strong>carga asíncrona de archivos Javascript</strong>, es decir, no cargar un archivo JavaScript <a href="http://www.anieto2k.com/2007/02/06/cargar-el-javascript-que-queremos-cuando-queremos/">hasta que lo necesite</a>.</p>
<p><strong>¿Cómo hago esto?</strong></p>
<p>Es muy sencillo, una simple función puede facilitarte increíblemente el trabajo. Es la siguiente:</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">function</span> include<span class="br0">&#40;</span>path<span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> j = document.<span class="me1">createElement</span><span class="br0">&#40;</span><span class="st0">&quot;script&quot;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; j.<span class="me1">type</span> = <span class="st0">&quot;text/javascript&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; j.<span class="me1">src</span> = path;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; document.<span class="me1">body</span>.<span class="me1">appendChild</span><span class="br0">&#40;</span>j<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>Como puede apreciarse, la función crea &#8220;<em>al vuelo</em>&#8221; un elemento tipo script, y lo introduce en el cuerpo del documento. De esta forma no tenemos que cargar muchas librerías, o grandes archivos, hasta que no los necesitemos. </p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="kw1">if</span><span class="br0">&#40;</span>programa == <span class="st0">&#8216;test&#8217;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; include<span class="br0">&#40;</span><span class="st0">&#8216;test.js&#8217;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span> <span class="kw1">else</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; include<span class="br0">&#40;</span><span class="st0">&#8216;default.js&#8217;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li2">
<div class="de2"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>Es posible que incluso con el evento <em>onLoad</em> tengamos el control del instante en que se ha cargado, pero esto se atiene más a compatibilidades entre navegadores.</p>
<p>Este tema lo he rescatado, porque la versión 2.1 de <a href="http://codis.boozox.net/proyecto/Imaset">Imaset</a> va a tener una fuerte carga de Javascript, lo que hará que el manejo sea más rápido y llevadero, y evitará envíos AJAX innecesarios. Pero para esto debo cargar el gran fichero JS, únicamente cuando se solicite usar el plugin. De ahí su gran potencial.</p>
]]></content:encoded>
			<wfw:commentRss>http://boozox.net/javascript/carga-asincrona-de-archivos-javascript/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Comet, la nueva etapa de Ajax</title>
		<link>http://boozox.net/web/comet-la-nueva-etapa-de-ajax/</link>
		<comments>http://boozox.net/web/comet-la-nueva-etapa-de-ajax/#comments</comments>
		<pubDate>Thu, 30 Aug 2007 08:02:13 +0000</pubDate>
		<dc:creator>Alex Barros</dc:creator>
				<category><![CDATA[HTML]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://boozox.net/sin-categoria/comet-la-nueva-etapa-de-ajax/</guid>
		<description><![CDATA[Ajax sigue siendo un completo desconocido para muchos programadores web. Se habla de que es un lenguaje (no lo es, es una herramienta!) y se asocia automáticamente a la nueva generación de webs, más potentes, amigables, sociales, usables&#8230;
Ajax consiste, básicamente, en mandar mensajes (con formato XML, o texto plano) del servidor al cliente mediante una [...]]]></description>
			<content:encoded><![CDATA[<p><img src='http://boozox.net/wp-content/generic-comet.jpg' alt='generic-comet.jpg'  style="float:right;"/>Ajax sigue siendo <strong>un completo desconocido</strong> para muchos programadores web. Se habla de que <em>es un lenguaje</em> (no lo es, es una herramienta!) y se asocia automáticamente a la <strong>nueva generación de webs</strong>, más potentes, amigables, sociales, usables&#8230;</p>
<p>Ajax consiste, básicamente, en mandar <em>mensajes</em> (con formato XML, o texto plano) <strong>del servidor al cliente</strong> mediante una petición asíncrona por parte del cliente.</p>
<p>Un ejemplo: Cuando el usuario pulsa en un botón de búsqueda, se envía una petición al servidor solicitando los resultados de esta búsqueda, cuando los tiene los devuelve, y el usuario los ve en pantalla, todo sin cambiar de página.</p>
<p>Esto implica que para que el servidor me de información, <strong>el cliente tiene que solicitarla</strong>, es decir, al ocurrir algún <em>evento en el lado cliente</em>. Y aquí radica la <strong><a href="http://es.wikipedia.org/wiki/Comet#AJAX_vs_Comet">diferencia</a> entre AJAX y Comet</strong> (o HTTP Push), y es que <a href="http://sentidoweb.com/2006/03/28/comet-la-siguiente-etapa-de-ajax.php">Comet</a> <em>no requiere que el ordenador cliente solicite ninguna información</em>, sinó que es el servidor el que <em>decide cuándo enviar la información al cliente</em>, de forma asíncrona.</p>
<p>Un ejemplo: En un sistema de mensajería instantánea, en lugar de hacer contínuos chequeos al servidor, para ver si hay nuevos mensajes, símplemente cada vez que el servidor recibe un nuevo mensaje envía esta información a las máquinas cliente.</p>
<p>La forma de hacer esto es mediante una <a href="http://www.irishdev.com/NewsArticle.aspx?id=2166">conexión HTTP de larga duración</a>, de esta forma el servidor tiene una línea contínua de comunicación con el cliente. Aquí el cliente envía información al servidor, y el servidor al cliente; pero cada uno lo hace en el momento oportuno, en lugar de viajar la información como bloque de datos en respuesta a una petición.</p>
<p>Para usar esta tecnología tendremos que usar alguno de los pocos frameworks que actualmente existen con soporte para Comet, por ejemplo <a href="http://www.thecodingmachine.com/projects/xaja">Xaja</a>, un <strong>framework PHP</strong> que permite este tipo de conexión, o <a href="http://www.openjsan.org/doc/f/fu/fuzzynerd/HTTP/Push/0.04/lib/HTTP/Push.html">HTTP.Push</a>, pequeña <strong>biblioteca javascript</strong> con este tipo de llamada.</p>
<p>Personalmente todabía he de investigar sobre esta tecnología, porque no tengo muy claro lo de generar eventos en el servidor, o lo de que un archivo en lado servidor esté siempre disponible con el cliente.</p>
]]></content:encoded>
			<wfw:commentRss>http://boozox.net/web/comet-la-nueva-etapa-de-ajax/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
