<?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>Hello Google, su primera posición en Internet &#187; Javascript</title>
	<atom:link href="http://www.hellogoogle.com/category/desarrollo-web/javascript/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.hellogoogle.com</link>
	<description>Artículos para Crecer con su Empresa en Internet</description>
	<lastBuildDate>Sat, 27 Feb 2010 12:41:31 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>AJAX Accesible para Google: Posicionar contenido en Ajax</title>
		<link>http://www.hellogoogle.com/ajax-accesible-para-google/</link>
		<comments>http://www.hellogoogle.com/ajax-accesible-para-google/#comments</comments>
		<pubDate>Tue, 16 Jun 2009 09:33:11 +0000</pubDate>
		<dc:creator>Ignacio Gorostiza</dc:creator>
				<category><![CDATA[Accesibilidad]]></category>
		<category><![CDATA[Ajax]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[SEO]]></category>
		<category><![CDATA[google ajax acceibilidad javascript]]></category>

		<guid isPermaLink="false">http://www.hellogoogle.com/?p=326</guid>
		<description><![CDATA[Recientemente me preguntaron si Google indexaba contenidos en Ajax. La respuesta es: depende. 
Como ya sabrá Ajax es una técnica que abre la posibilidad de realizar una petición XMLHTTP al servidor y recibir un documento html/xml de respuesta de manera asíncrona, es decir, sin necesidad de recargar la página. Ajax en principio no tiene ninguna [...]


Artículos relacionados:<ol><li><a href='http://www.hellogoogle.com/ajax-zoomy-lightbox/' rel='bookmark' title='Permanent Link: Ajax zoomy: Un Ajax lightbox para su galería de imágenes'>Ajax zoomy: Un Ajax lightbox para su galería de imágenes</a></li><li><a href='http://www.hellogoogle.com/efecto_ajax_lightbox_javascript_css/' rel='bookmark' title='Permanent Link: Ajax Lightbox: Una ventana emergente 2.0 en su página web'>Ajax Lightbox: Una ventana emergente 2.0 en su página web</a></li><li><a href='http://www.hellogoogle.com/real-ajax-sexy-curls/' rel='bookmark' title='Permanent Link: Real Ajax Sexy Curls: Una forma elegante de mostrar el código fuente de nuestra página'>Real Ajax Sexy Curls: Una forma elegante de mostrar el código fuente de nuestra página</a></li></ol>]]></description>
			<content:encoded><![CDATA[<div><img src="/wp-content/uploads/2009/06/accesible_ajax.jpg" title="AJAX Accesible para Google: Posicionar contenido en Ajax" alt="accesible ajax AJAX Accesible para Google: Posicionar contenido en Ajax" /></div>
<p>Recientemente me preguntaron si Google indexaba contenidos en Ajax. La respuesta es: depende. </p>
<p>Como ya sabrá <em>Ajax</em> es una técnica que abre la posibilidad de realizar una petición <em>XMLHTTP</em> al servidor y recibir un documento <em>html/xml</em> de respuesta de manera <em>asíncrona</em>, es decir, sin necesidad de recargar la página. Ajax en principio no tiene ninguna contraindicación de cara al posicionamiento en Google, en realidad el problema no se encuentra en el Ajax, si no en la accesibilidad de los documentos que queramos que sean indexados.</p>
<p>En el  <a href="http://www.yensdesign.com/tutorials/contentajax/">siguiente ejemplo</a> los contenidos se cargan de manera asíncrona, pero Google no sería capaz de indexarlos. ¿Por qué? El problema radica en los enlaces, o mejor dicho, en la ausencia de enlaces. Fíjese en el código del menú principal:</p>
<code>&lt;li id=&quot;home&quot;&gt;Home&lt;/li&gt;<br />
&lt;li id=&quot;news&quot;&gt;News&lt;/li&gt;<br />
&lt;li id=&quot;interviews&quot;&gt;Interviews&lt;/li&gt;<br />
&lt;li id=&quot;external&quot;&gt;External&lt;/li&gt;  
<br/><br/>
</code>
<p>La utilización de Ajax no debe entrar en conflicto con la correcta navegación por los diferentes contenidos relevantes de un Site. En el ejemplo anterior, el acceso a los contenidos se implementa en javascript y esto impide que el <a href="http://es.wikipedia.org/wiki/Googlebot" target="_blank">bot de Google</a> pueda acceder e indexar estos contenidos. El siguiente código muestra la funcionalidad que controla el acceso a los contenidos:</p>
<code>sections.click(function(){

 		<br />
//show the loading bar<br />  		
 		showLoading();  	<br />	//load selected section<br />  		switch(this.id){ <br /> 			case &quot;home&quot;:<br />  				content.slideUp();  <br />				content.load(&quot;sections.html #section_home&quot;, hideLoading);<br />  				content.slideDown();<br />  				break;<br />		...  <br/>	
</code>
<p>Nota: El código del ejemplo está implementado con el <em>framework Jquery</em>. ¿No lo conoce?...¿Y a<a href="http://jquery.com/" target="_blank"> qué está esperando</a>?</p>
<p>Si aplica un simulador de Bot a la url del ejemplo podría hacerse una idea aproximada de <a href="http://www.xml-sitemaps.com/se-bot-simulator.html?op=se-bot-simulator&amp;go=1&amp;pageurl=http%3A//www.yensdesign.com/tutorials/contentajax/&amp;se=googlebot&amp;submit=Start">cómo visualiza Google esta página.</a> Como puede comprobar los contenidos dinámicos no son accesibles. </p>
<h3>¿Cómo podemos conseguir que  Ajax sea accesible por Google ?</h3>
<p>Podemos considerar que Google visualiza una página de manera similar a como lo haría un navegador con javascript deshabilitado. Por tanto si queremos dar visibilidad al buscador, cada contenido debe ser accesible  a través de un link html natural.  Le he preparado un pequeño   <a href="http://www.hellogoogle.com/examples/contentajax/">ejemplo  funcional de Ajax accesible</a>. Fíjese el aspecto que presenta ahora el código del menú principal:</p>
<p><code>&lt;li&gt;&lt;a href=&quot;mike-tyson/default.htm&quot;&gt;MIKE&lt;/a&gt;&lt;/li&gt;<br />
&lt;li&gt;&lt;a href=&quot;house/default.htm&quot;&gt;HOUSE&lt;/a&gt;&lt;/li&gt;<br />
&lt;li&gt;&lt;a href=&quot;bob-marley/default.htm&quot;&gt;BOB&lt;/a&gt;&lt;/li&gt;<br />
&lt;li&gt;&lt;a href=&quot;spiderman/default.htm&quot;&gt;SPIDER&lt;/a&gt;&lt;/li&gt;</code></p>
<p>A continuación podemos modificar el comportamiento de un link utilizando <em>javascript no obstructivo</em>. Esta técnica permite acceder al <em>DOM</em> de la página y asignar una funcionalidad determinada, como puede ser el acceso asíncrono a contenidos, a cualquier enlace del documento. De esta manera presentaríamos un documento html con enlaces naturales a Google, y una página <a href="http://es.wikipedia.org/wiki/Aplicaciones_de_Internet_Ricas" target="_blank">RIA</a> a nuestros visitantes:</p>
<p><code>sections.click(function(e){<br />
  var my_anchor = $(this).attr(&quot;href&quot;);<br />
showLoading();<br />
content.slideUp(&quot;slow&quot;, function(){	content.load(my_anchor, hideLoading);	} );<br />
content.slideDown();<br />
return(false);<br />
});</code></p>
<p>Si aplicamos el simulador de Bot a este ejemplo, podemos comprobar que ahora <a href="http://www.xml-sitemaps.com/se-bot-simulator.html?op=se-bot-simulator&amp;go=1&amp;pageurl=http%3A//www.hellogoogle.com/examples/contentajax/&amp;se=googlebot&amp;submit=Start">Google accedería sin problema a todos los contenidos</a>.</p>
<p>Le animo a  <a href="http://www.hellogoogle.com/examples/contentajax/accesiblecontentajax.rar" target="_blank">descargarse el código de ejemplo</a>, destriparlo, analizarlo, mejorarlo y aplicarlo libremente en sus desarrollos. Estoy seguro que Google se lo agradecerá.</p>
<p>Por último tenga presente siempre las siguientes consideraciones a la hora de desarrollar una funcionalidad Ajax:</p>
<ul>
  <li>Cuide la arquitectura interna de su Site y cree una estructura de enlaces lógica. </li>
  <li>Cada contenido de su site debe ser accesible por un enlace de texto estático.</li>
  <li>Si el acceso a los contenidos se realiza a través de <em>JavaScript</em>, frames, DHTML, Flash, o su acceso está restringido por id de sesión o Cookies, es muy posible que Google encuentre problemas para encontrarlos e indexarlos.</li>
  <li>El javascript <a href="http://es.wikipedia.org/wiki/JavaScript_no_obstructivo" target="_blank">no obstructivo</a> le permite crear funcionalidades RIA sin repercutir en la accesibilidad de la web.</li>
  <li>Puede recurrir a <a href="http://www.delorie.com/web/lynxview.html" target="_blank">navegadores textuales</a> para comprobar como visualizará Google su página.</li>
</ul> Powered by HelloGoogle.com

<p>Artículos relacionados:<ol><li><a href='http://www.hellogoogle.com/ajax-zoomy-lightbox/' rel='bookmark' title='Permanent Link: Ajax zoomy: Un Ajax lightbox para su galería de imágenes'>Ajax zoomy: Un Ajax lightbox para su galería de imágenes</a></li><li><a href='http://www.hellogoogle.com/efecto_ajax_lightbox_javascript_css/' rel='bookmark' title='Permanent Link: Ajax Lightbox: Una ventana emergente 2.0 en su página web'>Ajax Lightbox: Una ventana emergente 2.0 en su página web</a></li><li><a href='http://www.hellogoogle.com/real-ajax-sexy-curls/' rel='bookmark' title='Permanent Link: Real Ajax Sexy Curls: Una forma elegante de mostrar el código fuente de nuestra página'>Real Ajax Sexy Curls: Una forma elegante de mostrar el código fuente de nuestra página</a></li></ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.hellogoogle.com/ajax-accesible-para-google/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Real Ajax Sexy Curls: Una forma elegante de mostrar el código fuente de nuestra página</title>
		<link>http://www.hellogoogle.com/real-ajax-sexy-curls/</link>
		<comments>http://www.hellogoogle.com/real-ajax-sexy-curls/#comments</comments>
		<pubDate>Fri, 13 Feb 2009 15:24:38 +0000</pubDate>
		<dc:creator>Ignacio Gorostiza</dc:creator>
				<category><![CDATA[Ajax]]></category>
		<category><![CDATA[Desarrollo web]]></category>
		<category><![CDATA[Javascript]]></category>

		<guid isPermaLink="false">http://www.hellogoogle.com/real-ajax-sexy-curls-una-forma-elegante-de-mostrar-el-codigo-fuente-de-nuestra-pagina/</guid>
		<description><![CDATA[Recientemente tuve la oportunidad de ver un desarrollo en jquery llamado Sexy Curls que simula el paso de una hoja. Lo cierto es que me pareció un efecto muy interesante pero también muy desaprovechado. La librería se limitaba a mostrar por debajo una imagen que &#34;simulaba&#34; representar el código fuente de una página.
Así que ni [...]


Artículos relacionados:<ol><li><a href='http://www.hellogoogle.com/efecto_ajax_lightbox_javascript_css/' rel='bookmark' title='Permanent Link: Ajax Lightbox: Una ventana emergente 2.0 en su página web'>Ajax Lightbox: Una ventana emergente 2.0 en su página web</a></li><li><a href='http://www.hellogoogle.com/ajax-zoomy-lightbox/' rel='bookmark' title='Permanent Link: Ajax zoomy: Un Ajax lightbox para su galería de imágenes'>Ajax zoomy: Un Ajax lightbox para su galería de imágenes</a></li><li><a href='http://www.hellogoogle.com/ajax-accesible-para-google/' rel='bookmark' title='Permanent Link: AJAX Accesible para Google: Posicionar contenido en Ajax'>AJAX Accesible para Google: Posicionar contenido en Ajax</a></li></ol>]]></description>
			<content:encoded><![CDATA[<div class="caption-full" align="center"><a href="http://www.hellogoogle.com/wp-content/uploads/2009/02/ajax_sexy_curl.jpg" ><img src='http://www.hellogoogle.com/wp-content/uploads/2009/02/ajax_sexy_curl.jpg' alt='Ajax Sexy Curls: Una forma elegante de mostrar el código fuente de nuestra página' title="Real Ajax Sexy Curls: Una forma elegante de mostrar el código fuente de nuestra página" /></a></div>
<p>Recientemente tuve la oportunidad de ver un desarrollo en jquery llamado <a href="http://www.elliottkember.com/sexy_curls.html">Sexy Curls</a> que simula el paso de una hoja. Lo cierto es que me pareció un efecto muy interesante pero también muy desaprovechado. La librería se limitaba a mostrar por debajo una imagen que &quot;simulaba&quot; representar el código fuente de una página.</p>
<p>Así que ni corto ni perezoso me puse manos a la obra para completar el efecto y he desarrollado <a href="http://www.hellogoogle.com//examples/ajax_sexy_curls/ejemplo.htm" target="_blank">Real Ajax Sexy Curl,</a> que añade a la librería el encanto de mostrar por debajo el código fuente <strong>real</strong> de la página. </p>
<p>Una imagen vale más que mil palabras, así que, ¿por qué no echa un vistazo al <a href="http://www.hellogoogle.com//examples/ajax_sexy_curls/ejemplo.htm" target="_blank">ejemplo que he preparado</a>? (Por ahora sólo compatible con firefox <img src='http://www.hellogoogle.com/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' title="Real Ajax Sexy Curls: Una forma elegante de mostrar el código fuente de nuestra página" />  )</p>
<h3>Como funciona</h3>
<p>Ajax Sexy Curl es una funcionalidad basada el el framework <em>Jquery</em>, para su desarrollo he utilizado dos librerías open source:</p>
<ul>
  <li><em>Sexy Curl</em> escrita por Elliott Kember (http://twitter.com/elliottkember)</li>
  <li><em>Ajax Code Display</em>    escrita por Christian Heilmann (http://wait-till-i.com) </li>
</ul>
<p>La primera - Sexy Curl - simula un efecto de pasar página, para ello escala una imagen Png con transparencias. Como ya comenté antes, la librería original se limitaba a descubir una imagen que simulaba ser el código fuente de la página. </p>
<p>Ajax Code Display es una librería Ajax que muestra el código fuente de una página formateado. Es una librería bastante interesante que admite diferentes parámetros de personalización, Le animo a que visite su página y le eche un vistazo.</p>
<p>El resto ha sido una tarea bastante simple para compatibilizar ambas librerías y ajustar la funcionalidad a los objetivos iniciales del proyecto. Creo que el <a href="http://www.hellogoogle.com//examples/ajax_sexy_curls/ejemplo.htm" target="_blank">resultado es realmente espectacular</a>, ¿No le parece?</p>
<h3>Cómo incluirlo en mi web</h3>
<p>Ajax Sexy Curl puede aplicarse a cualquier web de manera extremadamente sencilla.</p>
<p>1. Incluya las librerías y estilos en la cabecera de la página <em>head</em>:</p>
<p><code>&lt;script type=&quot;text/javascript&quot; src=&quot;jquery1.3min.js&quot;&gt;&lt;/script&gt;<br />
&lt;script type=&quot;text/javascript&quot; src=&quot;jqueryui.js&quot;&gt;&lt;/script&gt;<br />
&lt;script type=&quot;text/javascript&quot; src=&quot;turn.js&quot;&gt;&lt;/script&gt;<br />
&lt;script type=&quot;text/javascript&quot; src=&quot;ajaxcodedisplay.js&quot;&gt;&lt;/script&gt;<br />
&lt;link rel=&quot;stylesheet&quot; href=&quot;turn.css&quot;&gt;</code></p>
<p>2. Por último, incluya en la primera línea del <em>body </em>el siguiente código html:</p>
<p><code>&lt;div id=&quot;target&quot;&gt;&lt;a href=&quot;#&quot; class=&quot;codeexample&quot; &gt;&lt;/a&gt;&lt;/div&gt;<br />
</code></p>
<p>Nada más, el código javascript no intrusivo se encargará del resto.</p>
<h3>Opciones de personalización</h3>
<p>A través de los estilos puede personalizar algunos aspectos de la funcionalidad:</p>
  <code>    var defaults = {      <br />
  directory: 'turn',      // Directorio en el que nos encontramos<br />      
  side: 'left',           // Si lo cambia a &quot;right&quot; la doblez se mostrará a la derecha      <br />
  turnImage: 'fold.png',  // Imagen para mostrar la doblez      <br />
  maxHeight: 400,         // Altura máxima<br />
  startingWidth: 80,     // Altura y anchura inicial    <br />
  startingHeight: 80,    // <br />      
  autoCurl: false         // Si lo ponemos a &quot;true&quot; la transición se inicia con un mouseover</code>
  <p>Por otro lado el código es Open Source con lo que podemos estudiarlo, modificarlo y ampliarlo libremente para que se ajuste perfectamente a nuestras necesidades.</p>
  <h3>Código fuente</h3>
  <p>Puede <a href="http://www.hellogoogle.com//examples/ajax_sexy_curls/real_ajax_sexy_curls.rar">descargarse el código</a> fuente de la librería y utilizarlo libremente en su Site, eso sí, tenga en cuenta las siguientes indicaciones:</p>
  <p>Este pluging se ofree bajo una licencia  <em>MIT </em>, esto significa que puede hacer prácticamente lo que le apetezca con él:</p>
  <ul>
    <li>Puede copiarlo, modificarlo, mezclarlo, publicarlo, distribuirlo, sub-licenliarlo y/o venderlo.</li>
    <li>Además el autor de la librería original y yo mismo, le permitimos imprimirla en una hoja de papel, doblarla y hacerse un sombrero.</li>
    <li>Eso sí, si mantiene los créditos de los autores, le estaremos muy agradecidos.<br />
    </li>
  </ul>
<p>La funcionalidad funciona correctamente en Firefox y <s>a partir de IE7</s> (Próximamente). Nada más, espero que este efecto le haya gustado tanto como a mi.</p> Powered by HelloGoogle.com

<p>Artículos relacionados:<ol><li><a href='http://www.hellogoogle.com/efecto_ajax_lightbox_javascript_css/' rel='bookmark' title='Permanent Link: Ajax Lightbox: Una ventana emergente 2.0 en su página web'>Ajax Lightbox: Una ventana emergente 2.0 en su página web</a></li><li><a href='http://www.hellogoogle.com/ajax-zoomy-lightbox/' rel='bookmark' title='Permanent Link: Ajax zoomy: Un Ajax lightbox para su galería de imágenes'>Ajax zoomy: Un Ajax lightbox para su galería de imágenes</a></li><li><a href='http://www.hellogoogle.com/ajax-accesible-para-google/' rel='bookmark' title='Permanent Link: AJAX Accesible para Google: Posicionar contenido en Ajax'>AJAX Accesible para Google: Posicionar contenido en Ajax</a></li></ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.hellogoogle.com/real-ajax-sexy-curls/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Cómo enviar información, datos o parámetros con el método POST sin utilizar formulario</title>
		<link>http://www.hellogoogle.com/envio_datos_post_sin/</link>
		<comments>http://www.hellogoogle.com/envio_datos_post_sin/#comments</comments>
		<pubDate>Sat, 29 Nov 2008 09:02:50 +0000</pubDate>
		<dc:creator>Ignacio Gorostiza</dc:creator>
				<category><![CDATA[Desarrollo web]]></category>
		<category><![CDATA[Javascript]]></category>

		<guid isPermaLink="false">http://www.hellogoogle.com/envio_datos_post_sin/</guid>
		<description><![CDATA[Tal vez haya necesitado en alguna ocasión enviar datos de una p&#225;gina a otra y se ha visto forzado a enviarlos de manera visible en la URL en forma de querystring. Como sabr&#225; la  forma de enviar informaci&#243;n de manera no visible en la URL es utilizar el m&#233;todo POST pero para ello es [...]


Artículos relacionados:<ol><li><a href='http://www.hellogoogle.com/formularios_xhtml_css_javascript/' rel='bookmark' title='Permanent Link: Cómo mejorar los formularios HTML con Xhtml, Css y Javascript'>Cómo mejorar los formularios HTML con Xhtml, Css y Javascript</a></li><li><a href='http://www.hellogoogle.com/ajax-zoomy-lightbox/' rel='bookmark' title='Permanent Link: Ajax zoomy: Un Ajax lightbox para su galería de imágenes'>Ajax zoomy: Un Ajax lightbox para su galería de imágenes</a></li><li><a href='http://www.hellogoogle.com/tutorial_google_analytics_1/' rel='bookmark' title='Permanent Link: Tutorial sobre Google Analytics: 1. Información básica, configuración e instalación'>Tutorial sobre Google Analytics: 1. Información básica, configuración e instalación</a></li></ol>]]></description>
			<content:encoded><![CDATA[<div class="captionfull" ><center><a href="http://www.hellogoogle.com/wp-content/uploads/2008/11/post_data1.jpg" ><img src='http://www.hellogoogle.com/wp-content/uploads/2008/11/post_data1.jpg' alt='Cómo mandar información, datos o parámetros con el método POST y sin formulario' title="Cómo enviar información, datos o parámetros con el método POST sin utilizar formulario" /></a></center></div>
<p>Tal vez haya necesitado en alguna ocasión enviar datos de una p&aacute;gina a otra y se ha visto forzado a enviarlos de manera visible en la URL en forma de querystring. Como sabr&aacute; la  forma de enviar informaci&oacute;n de manera no visible en la URL es utilizar el m&eacute;todo POST pero para ello es necesario recurrir a un formulario. En el siguiente art&iacute;culo veremos una t&eacute;cnica que nos permite enviar datos por POST sin necesidad de trabajar con un formulario, o al menos, sin la necesidad de manejar un formulario de manera directa.</p>
<h3>El M&eacute;todo POST</h3>
<p>La especificaci&oacute;n de HTML  sitúa  la diferencia entre los m&eacute;todos GET y POST en la forma en la que los datos son enviados: En el caso de GET los datos son incluídos en la URL, mientras que cuando se utiliza el m&eacute;todo Post los datos de un formulario se env&iacute;an a la p&aacute;gina destino inmersos dentro del cuerpo de la petici&oacute;n HTTP.</p>
<p> Adem&aacute;s la especificaci&oacute;n recomienza utilizar el m&eacute;todo GET solamente cuando el procesamiento del formulario es <strong>idempotente </strong>(El env&iacute;o de los datos no va a generar un cambio en ning&uacute;n elemento del sistema salvo en el monitor del usuario), y utilizar el m&eacute;todo POST para el resto de casos. Un ejemplo de formulario idempotente podr&iacute;a ser el de una b&uacute;squeda, ya que tan s&oacute;lo genera una p&aacute;gina de resultados y no implica ning&uacute;n cambio de estado en BBDD.</p>
<p>Sin embargo hay casos en los que estamos obligados a utilizar el m&eacute;todo POST:</p>
<ul>
  <li>Si los datos a enviar contienen car&aacute;cteres que no pueden codificarse en ASCII.</li>
  <li>Si el tama&ntilde;o de los datos a enviar es muy grande. Puede encontrar un documento de Microsoft que habla sobre esta limitaci&oacute;n <a href="http://support.microsoft.com/default.aspx?scid=kb;EN-US;q208427">INFO: Maximum URL Length Is 2,083 Characters in Internet Explorer (Q208427) </a>. </li>
  <li> En el caso de que no queramos hacer visible a los usuarios de manera directa c&oacute;mo se env&iacute;an los datos.</li>
</ul>
<p>Puede encontrar toda la informaci&oacute;n que necesite sobre los m&eacute;todos GET y POST en la siguiente p&aacute;gina <a href="http://www.cs.tut.fi/%7Ejkorpela/forms/methods.html" target="_blank">http://www.cs.tut.fi/~jkorpela/forms/methods.html</a></p>
<h3>Un ejemplo pr&aacute;ctico</h3>
<p>Para exponer de forma clara y sencilla esta t&eacute;cnica he pensado que lo mejor es preparar el siguiente <a href="http://www.hellogoogle.com/examples/post/">ejemplo</a>. </p>
<p>El c&oacute;digo javascript es extremadamente sencillo, en primer lugar accedemos directamente a los servicios del DOM para crear un formulario con un campo de tipo hidden. Existen muchas formas de hacer esto, en este ejemplo hemos optado por utilizar la funci&oacute;n <em>createElement </em>para crear los nodos y la funci&oacute;n <em>appenchild </em>para a&ntilde;adirlos al &aacute;rbol del documento:</p>
<p> <code>var form = document.createElement(&quot;form&quot;); // crear un form<br />
with(form) {<br />
setAttribute(&quot;name&quot;, &quot;myform&quot;); //nombre del form<br />
setAttribute(&quot;action&quot;, &quot;&quot;); // action por defecto<br />
setAttribute(&quot;method&quot;, &quot;post&quot;); // method POST }<br />
<br />

var input = document.createElement(&quot;input&quot;); // Crea un elemento input<br />
with(input) {<br />
setAttribute(&quot;name&quot;, &quot;theInput&quot;); //nombre del input<br />
setAttribute(&quot;type&quot;, &quot;hidden&quot;); // tipo hidden<br />
setAttribute(&quot;value&quot;, &quot;&quot;); // valor por defecto
}</code></p>
<p><code>  form.appendChild(input); // a&ntilde;ade el input al formulario<br />
document.getElementsByTagName(&quot;body&quot;)[0].appendChild(form); // a&ntilde;ade el formulario al documento
</code>
<p>El paso  siguiente y &uacute;ltimo (no le enga&ntilde;e cuando dije que iba a ser sencillo) es esperar a la carga de la pagina para recorrer el DOM del documento e identificar los links cuyo name sea &quot;<em>post</em>&quot;. En este caso recuperaremos el valor del <em>title</em> y se enviar&aacute; por POST a trav&eacute;s del formulario a la p&aacute;gina referenciada en el <em>href</em>.</p>
  <code> 
    window.onload=function(){<br />
    var my_links = document.getElementsByTagName(&quot;a&quot;);<br />
    for (var a = 0; a &lt; my_links.length; a++) {<br />
    if (my_links[a].name==&quot;post&quot;) my_links[a].onclick = function() {<br />
  document.myform.action=this.href;<br />
  document.myform.theInput.value=this.title;<br />
  document.myform.submit();<br />
  return false;}<br />
}</code><code>}</code></p>
<p>Aquellos links en los que queramos enviar algún tipo de información por POST deberán incluir los siguientes atributos:</p>
<ul><li>name="post"</li>
  <li>title=&quot;&lt;valor que queremos enviar&gt;&quot;</li>
  <li>href=&quot;&lt;url a la que se enviar&aacute; la informaci&oacute;n&gt;&quot;</li>
</ul>
<p>Valga el siguiente c&oacute;digo de ejemplo:</p>
<p><code>&lt;a href=&quot;ejemplo_post.php&quot; name=&quot;post&quot; title=&quot;Este valor se enviar&aacute; por post&quot; &gt;Pulsa aqu&iacute;&lt;/a&gt;   Para hacer POST. <br /> 
Tambi&eacute;n puedes &lt;a href=&quot;ejemplo_post.php&quot; name=&quot;post&quot; title=&quot;Este valor tambi&eacute;n se env&iacute;a por post&quot; &gt;pulsar aqu&iacute;&lt;/a&gt; para hacer otro POST.<br />
Esto es un &lt;a href=&quot;ejemplo_post.php&quot;&gt;Esto es un link normal&lt;/a&gt;.</code></p> Powered by HelloGoogle.com

<p>Artículos relacionados:<ol><li><a href='http://www.hellogoogle.com/formularios_xhtml_css_javascript/' rel='bookmark' title='Permanent Link: Cómo mejorar los formularios HTML con Xhtml, Css y Javascript'>Cómo mejorar los formularios HTML con Xhtml, Css y Javascript</a></li><li><a href='http://www.hellogoogle.com/ajax-zoomy-lightbox/' rel='bookmark' title='Permanent Link: Ajax zoomy: Un Ajax lightbox para su galería de imágenes'>Ajax zoomy: Un Ajax lightbox para su galería de imágenes</a></li><li><a href='http://www.hellogoogle.com/tutorial_google_analytics_1/' rel='bookmark' title='Permanent Link: Tutorial sobre Google Analytics: 1. Información básica, configuración e instalación'>Tutorial sobre Google Analytics: 1. Información básica, configuración e instalación</a></li></ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.hellogoogle.com/envio_datos_post_sin/feed/</wfw:commentRss>
		<slash:comments>20</slash:comments>
		</item>
		<item>
		<title>Cómo mejorar los formularios HTML con Xhtml, Css y Javascript</title>
		<link>http://www.hellogoogle.com/formularios_xhtml_css_javascript/</link>
		<comments>http://www.hellogoogle.com/formularios_xhtml_css_javascript/#comments</comments>
		<pubDate>Wed, 19 Nov 2008 09:53:33 +0000</pubDate>
		<dc:creator>Ignacio Gorostiza</dc:creator>
				<category><![CDATA[Accesibilidad]]></category>
		<category><![CDATA[Desarrollo web]]></category>
		<category><![CDATA[Javascript]]></category>

		<guid isPermaLink="false">http://www.hellogoogle.com/formularios_xhtml_css_javascript/</guid>
		<description><![CDATA[Los formularios son sin duda la forma de interacción más directa con el usuario que puede existir en un Site. El estándar HTML ofrece una serie de componentes nativos que pueden ser ampliados utilizando css y/o javascript. A continuación le muestro una serie de recursos  imprescindibles para mejorar la experiencia del usuario y crear [...]


Artículos relacionados:<ol><li><a href='http://www.hellogoogle.com/un-emulador-de-zx-spectrum-en-javascript/' rel='bookmark' title='Permanent Link: Un emulador de ZX Spectrum en Javascript'>Un emulador de ZX Spectrum en Javascript</a></li><li><a href='http://www.hellogoogle.com/envio_datos_post_sin/' rel='bookmark' title='Permanent Link: Cómo enviar información, datos o parámetros con el método POST sin utilizar formulario'>Cómo enviar información, datos o parámetros con el método POST sin utilizar formulario</a></li><li><a href='http://www.hellogoogle.com/javascript_no_intrusivo_ejemplo/' rel='bookmark' title='Permanent Link: Javascript no intrusivo, un ejemplo mágico.'>Javascript no intrusivo, un ejemplo mágico.</a></li></ol>]]></description>
			<content:encoded><![CDATA[<div class="caption-full"><center><a href="http://www.hellogoogle.com/wp-content/uploads/2008/11/mejorar_formularios_html.jpg" ><img src='http://www.hellogoogle.com/wp-content/uploads/2008/11/mejorar_formularios_html.jpg' alt='Como mejorar los formularios HTML con Xhtml, Css y Javascript' title="Cómo mejorar los formularios HTML con Xhtml, Css y Javascript" /></a></center></div>
<p>Los formularios son sin duda la forma de interacción más directa con el usuario que puede existir en un Site. El estándar HTML ofrece una serie de componentes nativos que pueden ser ampliados utilizando css y/o javascript. A continuación le muestro una serie de recursos  imprescindibles para mejorar la experiencia del usuario y crear formularios interactios, accesibles y muy atractivos. Si conoce algún otro recurso que no haya incluido y quiere compartirlo en hellogoogle.com no dude en comentármelo:</p>
<h3>Botones mejorados</h3>
<ul>
  <li><a href="http://particletree.com/features/rediscovering-the-button-element/" target="_blank">Cómo Incluir un icono en los botones </a></li>
  <li><a href="http://www.oscaralexander.com/tutorials/how-to-make-sexy-buttons-with-css.html" target="_blank">Cómo mejorar los botones con css</a></li>
  <li><a href="http://www.shauninman.com/archive/2007/09/10/styling_file_inputs_with_css_and_the_dom" target="_blank">Como cambiar el estilo a los botones tipo File con css y javascript</a></li>
  <li><a href="http://www.nublue.co.uk/blog/css-hover-button/" target="_blank">Cómo hacer un hover "sexy" con css.</a></li>
</ul>
<h3>Radio Buttons y Checboxes</h3>
<ul>
  <li><a href="http://ryanfait.com/resources/custom-checkboxes-and-radio-buttons/" target="_blank">Cómo cambiar el aspecto a los checkbox y radio buttons</a></li>
  <li><a href="http://www.c82.net/posts.php?id=25" target="_blank">Elemento de formulario: Select Area + Checkbox</a></li>
</ul>
<h3>Mejorar el elemento Input</h3>
<ul><li><a href="http://www.picment.com/articles/css/funwithforms/">Cómo cambiar el aspecto de los elementos input</a></li>
  <li><a href="http://www.brandspankingnew.net/archive/2006/08/ajax_auto-suggest_auto-complete.html">Campos input autocompletables con Ajax</a></li>
</ul>
<h3>Combo box mejorados</h3>
<ul>
  <li><a href="http://particletree.com/features/upgrade-your-select-element-to-a-combo-box/" target="_blank">Elemento de formulario: Input Text + Combo Box</a></li>
</ul>
<h3>Menús de pestañas</h3>
<ul>
  <li><a href="http://www.alistapart.com/articles/slidingdoors/" target="_blank">Menú de pestañas con css</a></li>
</ul>
<h3>Maquetación de elementos de  formulario con CSS </h3>
<ul>
  <li><a href="http://www.formassembly.com/form-garden.php?formId=29&amp;style=/form-builder/css/campground_2" target="_blank">Diseño del layout de un formulario con css</a></li>
  <li><a href="http://www.cssplay.co.uk/menu/form.html" target="_blank">Diseño de forumularios con sss</a></li>
  <li><a href="http://www.skyrocket.be/2006/01/09/semantic-horizontal-forms/" target="_blank">Formularios semánticos horizontales</a></li>
  <li><a href="http://www.badboy.ro/assets/articles/niceforms/niceforms.html" target="_blank">Diseño de formularios</a></li>
  <li><a href="http://www.agavegroup.com/?p=35" target="_blank">Formularios funcionales y bonitos</a></li>
  <li><a href="http://jeffhowden.com/code/css/forms/" target="_blank">Cómo maquetar formularios con css y sin tablas.</a></li>
  <li><a href="http://www.sitepoint.com/article/style-web-forms-css" target="_blank">Aplicar estilo a los formularios con CSS</a></li>
  <li><a href="http://www.aplus.co.yu/css/styling-form-fields/" target="_blank">Aplicar estilo a los campos de formulario</a></li>
</ul>
<h3>Formularios accesibles</h3>
<ul>
  <li><a href="http://www.subtraction.com/archives/2005/0822_free_form_fo.php" target="_blank">Formularios crossbrowser en xhtml + css</a></li>
  <li><a href="http://www.websiteoptimization.com/speed/tweak/forms/" target="_blank">Formularios accesibles con css</a></li>
  <li><a href="http://www.themaninblue.com/writing/perspective/2004/03/24/" target="_blank">Plantillas con CSS para formularioss accesibles </a></li>
  <li><a href="http://www.alistapart.com/articles/prettyaccessibleforms" target="_blank">Formularios accesibles y bonitos</a></li>
  <li><a href="http://juicystudio.com/article/form-help-without-popups.html" target="_blank">Cómo mostrar una ayuda sin recurrir a  Popups</a></li>
  <li><a href="http://www.aplus.co.yu/css/styling-form-fields/" target="_blank"></a><a href="http://www.stuffandnonsense.co.uk/archives/trimming_form_fields.html" target="_blank">Mostrar y ocultar campos no obligatorios de manera accesible</a></li>
</ul>
<h3>Herramientas para crear formularios</h3>
<ul>
  <li><a href="http://www.icebrrg.com" target="_blank">Icebrrg - Herramienta para construir formularios, encuestas e invitaciones</a></li>
  <li><a href="http://www.wufoo.com" target="_blank">Wufoo - Otra herramienta para construir formularios, encuestas e invitaciones</a></li>
  <li><a href="http://www.jotform.com" target="_blank">JotForm - Herramienta online WYSIWYG para crear formularios</a></li>
  <li><a href="http://www.accessify.com/tools-and-wizards/accessibility-tools/form-builder/" target="_blank">Ccessify - Herramienta para construir formularios basados en CSS</a></li>
</ul>
<h3>Frameworks</h3>
<ul>
<li><a href="http://dojotoolkit.org/projects/dijit" target="_blank">Dijit- Framework javascript basado en Dojo realmente flexible y potente.</a>.</li>
  <li><a href="http://jxlib.org/" target="_blank">Framework Jx - Librería JavaScript basada en MooTools para crear interfaces gráficos.</a>. </li>
</ul>
</body> Powered by HelloGoogle.com

<p>Artículos relacionados:<ol><li><a href='http://www.hellogoogle.com/un-emulador-de-zx-spectrum-en-javascript/' rel='bookmark' title='Permanent Link: Un emulador de ZX Spectrum en Javascript'>Un emulador de ZX Spectrum en Javascript</a></li><li><a href='http://www.hellogoogle.com/envio_datos_post_sin/' rel='bookmark' title='Permanent Link: Cómo enviar información, datos o parámetros con el método POST sin utilizar formulario'>Cómo enviar información, datos o parámetros con el método POST sin utilizar formulario</a></li><li><a href='http://www.hellogoogle.com/javascript_no_intrusivo_ejemplo/' rel='bookmark' title='Permanent Link: Javascript no intrusivo, un ejemplo mágico.'>Javascript no intrusivo, un ejemplo mágico.</a></li></ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.hellogoogle.com/formularios_xhtml_css_javascript/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Ajax zoomy: Un Ajax lightbox para su galería de imágenes</title>
		<link>http://www.hellogoogle.com/ajax-zoomy-lightbox/</link>
		<comments>http://www.hellogoogle.com/ajax-zoomy-lightbox/#comments</comments>
		<pubDate>Mon, 03 Nov 2008 16:07:19 +0000</pubDate>
		<dc:creator>Ignacio Gorostiza</dc:creator>
				<category><![CDATA[Ajax]]></category>
		<category><![CDATA[Desarrollo web]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Web 2.0]]></category>

		<guid isPermaLink="false">http://www.hellogoogle.com/ajax-zoomy-un-ajax-lightbox-para-su-galeria-de-imagenes/</guid>
		<description><![CDATA[Ver demo.
Descargar código.
Podemos encontrar infinidad de librerias para crear en nuestras webs el conocido efecto lightbox que viene a ser la versión 2.0 de los antiguos pop-ups. Me gustaría destacar Zoomy.js que es una librería basada en Prototype y Scriptaculous, desarrollada por Filippo Buratti que permite crear de manera sencilla y rápida una galería de [...]


Artículos relacionados:<ol><li><a href='http://www.hellogoogle.com/efecto_ajax_lightbox_javascript_css/' rel='bookmark' title='Permanent Link: Ajax Lightbox: Una ventana emergente 2.0 en su página web'>Ajax Lightbox: Una ventana emergente 2.0 en su página web</a></li><li><a href='http://www.hellogoogle.com/ajax-accesible-para-google/' rel='bookmark' title='Permanent Link: AJAX Accesible para Google: Posicionar contenido en Ajax'>AJAX Accesible para Google: Posicionar contenido en Ajax</a></li><li><a href='http://www.hellogoogle.com/real-ajax-sexy-curls/' rel='bookmark' title='Permanent Link: Real Ajax Sexy Curls: Una forma elegante de mostrar el código fuente de nuestra página'>Real Ajax Sexy Curls: Una forma elegante de mostrar el código fuente de nuestra página</a></li></ol>]]></description>
			<content:encoded><![CDATA[<div class="captionleft" style="margin:0 10px"><a href="http://www.hellogoogle.com/wp-content/uploads/2008/11/ajax_zoomy.jpg" ><img src='http://www.hellogoogle.com/wp-content/uploads/2008/11/ajax_zoomy.jpg' alt='Ajax lightbox para su galería de imágenes' title="Ajax zoomy: Un Ajax lightbox para su galería de imágenes" /></a></div>
<p><a href="http://www.hellogoogle.com/examples/zoomy/" target="_blank">Ver demo</a>.</p>
<p><a href="http://www.hellogoogle.com/examples/zoomy/zoomy.rar" target="_blank">Descargar código</a>.</p>
<p>Podemos encontrar infinidad de librerias para crear en nuestras webs el conocido efecto lightbox que viene a ser la versión 2.0 de los antiguos pop-ups. Me gustaría destacar <a href="http://www.cssrevolt.com/upload/files/zoomy/" target="_blank">Zoomy.js</a> que es una librería basada en <em>Prototype</em> y <em>Scriptaculous</em>, desarrollada por <a href="http://www.cssrevolt.com/" target="_blank">Filippo Buratti</a> que permite crear de manera sencilla y rápida una galería de imágenes tipo lightbox. Tiene la particularidad de que a pesar de ser un código realmente ligero (menos de 5kb) las imagenes se presentan de manera muy elegante y  los pop-ups pueden ser arrastrados libremente por la pantalla.</p>
<p>Tomando este código como base, he añadido <strong>dos nuevas funcionalidades</strong> que creo pueden serle de mucha utilidad a la hora de desarrollar su propia galería:</p>
<ul>
  <li><strong>Contenido AJax</strong>: Ahora es posible mostrar en la ventana lightbox texto ó html.
    <p><code>&lt;ul class=&quot;<strong>zoomyx</strong>&quot;&gt;<br />
&lt;li&gt;&lt;a href=&quot;<strong>(url del contenido AJAX)</strong>&quot;  style=&quot;background-image: url<strong>(url de la imagen)</strong>&quot; title=&quot;Rubix Cube&quot;&gt;Rubix Cube&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;</code></p>
  </li>
  <li><strong>Definir estilos css de la venta lightbox</strong>: Es posible definir en el atributo <em>rel</em> los estilos css (altura, anchura, etc) de la ventana lightbox.    <p><code>&lt;ul class=&quot;<strong>zoomyx</strong>&quot;&gt;<br />
&lt;li&gt;&lt;a href=&quot;<strong>(url del contenido AJAX)</strong>&quot;  rel=&quot;<strong>(estilos css)</strong>' style=&quot;background-image: url<strong>(url de la imágen)</strong>&quot; title=&quot;Rubix Cube&quot;&gt;Rubix Cube&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;</code></p>
    <p><u>Nota:</u> A la hora de definir los estilos es necesario seguir la nomenclatura que establece prototype a la hora de utilizar la función <em><a href="http://www.prototypejs.org/api/element/setStyle" target="_blank">setStyle</a>, </em>por ejemplo:</p>
    <p><code>rel=&quot;width:'400px',height:'400px',color:'#fff'&quot;</code></p>
  </li>
</ul>
<p>El resto de funcionalidades de Zoomy se mantienen intactas, puede ver los cambios introducidos comparando la <a href="http://www.cssrevolt.com/upload/files/zoomy/zoomy.js" target="_parent">librería original</a>  con la <a href="http://www.hellogoogle.com/examples/zoomy/zoomy.js">librería ampliada en HelloGoogle.com</a>. Además la nueva librería no sufre ningún incremento de peso (A penas medio kb).</p>
<p>He preparado una <a href="http://www.hellogoogle.com/examples/zoomy/" target="_blank">demo</a> donde puede comprobar online el funcionamiento de la librería con todas sus funcionalidades.</p>
<p>Como siempre, puede <a href="http://www.hellogoogle.com/examples/zoomy/zoomy.rar" target="_blank">descargarse el código completo</a> de la librería y utilizarlo libremente en sus desarrollos. Recuerde que el código es open-source y está protegido por una <a href="http://www.opensource.org/licenses/mit-license.php">Licencia MIT</a>. </p>
<p>Ya no tiene excusa para incluir en su web una verdera galería de imágenes 2.0.</p> Powered by HelloGoogle.com

<p>Artículos relacionados:<ol><li><a href='http://www.hellogoogle.com/efecto_ajax_lightbox_javascript_css/' rel='bookmark' title='Permanent Link: Ajax Lightbox: Una ventana emergente 2.0 en su página web'>Ajax Lightbox: Una ventana emergente 2.0 en su página web</a></li><li><a href='http://www.hellogoogle.com/ajax-accesible-para-google/' rel='bookmark' title='Permanent Link: AJAX Accesible para Google: Posicionar contenido en Ajax'>AJAX Accesible para Google: Posicionar contenido en Ajax</a></li><li><a href='http://www.hellogoogle.com/real-ajax-sexy-curls/' rel='bookmark' title='Permanent Link: Real Ajax Sexy Curls: Una forma elegante de mostrar el código fuente de nuestra página'>Real Ajax Sexy Curls: Una forma elegante de mostrar el código fuente de nuestra página</a></li></ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.hellogoogle.com/ajax-zoomy-lightbox/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Un emulador de ZX Spectrum en Javascript</title>
		<link>http://www.hellogoogle.com/un-emulador-de-zx-spectrum-en-javascript/</link>
		<comments>http://www.hellogoogle.com/un-emulador-de-zx-spectrum-en-javascript/#comments</comments>
		<pubDate>Wed, 29 Oct 2008 11:07:52 +0000</pubDate>
		<dc:creator>Ignacio Gorostiza</dc:creator>
				<category><![CDATA[Desarrollo web]]></category>
		<category><![CDATA[Javascript]]></category>

		<guid isPermaLink="false">http://www.hellogoogle.com/un-emulador-de-zx-spectrum-en-javascript/</guid>
		<description><![CDATA[El único límite es la imaginación, esto es lo que ha debido pensar Matt Westcott  al desarrollar un emulador de ZX Spectrum íntegramente en Javascript. 
Antes de comentar cómo lo ha conseguido, le invito a que lo pruebe,  como verá puede ejecutar algunos juegos, entre ellos el clásico del genial programador español Paco [...]


Artículos relacionados:<ol><li><a href='http://www.hellogoogle.com/formularios_xhtml_css_javascript/' rel='bookmark' title='Permanent Link: Cómo mejorar los formularios HTML con Xhtml, Css y Javascript'>Cómo mejorar los formularios HTML con Xhtml, Css y Javascript</a></li><li><a href='http://www.hellogoogle.com/javascript_no_intrusivo_ejemplo/' rel='bookmark' title='Permanent Link: Javascript no intrusivo, un ejemplo mágico.'>Javascript no intrusivo, un ejemplo mágico.</a></li><li><a href='http://www.hellogoogle.com/real-ajax-sexy-curls/' rel='bookmark' title='Permanent Link: Real Ajax Sexy Curls: Una forma elegante de mostrar el código fuente de nuestra página'>Real Ajax Sexy Curls: Una forma elegante de mostrar el código fuente de nuestra página</a></li></ol>]]></description>
			<content:encoded><![CDATA[<div class="captionleft" style="margin:0 10px"><a href="http://www.hellogoogle.com/wp-content/uploads/2008/10/javascript_zx_spectrum.gif" ><img src='http://www.hellogoogle.com/wp-content/uploads/2008/10/javascript_zx_spectrum.gif' alt='Un emulador de ZX Spectrum en Javascript' title="Un emulador de ZX Spectrum en Javascript" /></a></div><p>El único límite es la imaginación, esto es lo que ha debido pensar <a href="http://matt.west.co.tt/spectrum/jsspeccy/" target="_blank">Matt Westcott</a>  al desarrollar un emulador de ZX Spectrum íntegramente en Javascript. </p>
<p>Antes de comentar cómo lo ha conseguido, le invito a que lo <a href="http://jsspeccy.zxdemo.org/" target="_blank">pruebe</a>,  como verá puede ejecutar algunos juegos, entre ellos el clásico del genial programador español <a href="http://www.meristation.com/v3/des_articulo.php?pic=GEN&amp;id=4824&amp;idj=&amp;idp=&amp;tipo=art&amp;c=1&amp;pos=0">Paco Menéndez</a>, Sir Fred.</p>
<p>¿Sorprendido? Gran parte del secreto, sobre todo en cuanto a lo que la parte gráfica corresponde, reside en las nuevas posibilidades que abre <a href="http://www.w3.org/TR/html5/the-canvas.html" target="_blank">HTML 5</a> ya soportado por algunos navegadores modernos. Si quiere profundizar un poco más en cómo se ha podido desarrollar una idea como ésta en un lenguaje tan limitado, a priori, como javascript, a continuación le muestro  los puntos clave del desarrollo:</p>
<ol>
  <li>Un emulador no es otra cosa que una emulación de un hardware por software. Es decir,  traducir la lógica de un circuito integrado en líneas de código.</li>
  <li>El núcleo o core del emulador ha sido tomado prestado del proyecto <a href="http://fuse-emulator.sourceforge.net/">Fuse</a> que implementa una emulación de la micro ZX80 en el lenguaje C. La sintaxis de C y Javascript es bastante parecida por lo que el trabajo de conversión es relativamente automático.</li>
  <li>Según nos cuenta el propio autor el principal problema lo encontró a la hora de implementar en javascript (que sólo maneja tipos <em>integer</em>) aquellos trozos de código que utilizaban funciones C de bajo nivel para implementar operaciones binarias para emular registros y realizar conversiones entre valores de 8 y 16 bits. </li>
  <li>La interfaz gráfica del Spectrum  se ha emulado en Firefox, Opera y Safari utilizando el <a href="http://en.wikipedia.org/wiki/Canvas_(HTML_element)" target="_blank">elemento <em>Canvas</em> de Javascript</a>.que permite dibujar dinámicamente <em>bitmaps</em> por código. Para el navegador Internet Explore, ya que no soporta <em>Canvas</em>, se ha recurrido a <a href="http://excanvas.sourceforge.net/" target="_blank">ExplorerCanvas</a>.</li>
  <li>Si ya ha probado el emulador, habrá comprobado que el consumo de recursos es muy alto y el rendimiento bastante mejorable. Uno de los principales temas a mejorar es la forma en la que se dibuja cada píxel. Ahora mismo es necesario dibujar un rectángulo de 1x1, pero en un futuro el autor tiene previsto sacar provecho de la interfaz de HTML 5 <em><a href="http://www.w3.org/TR/html5/the-canvas.html#putimagedata" target="_blank">putImageData</a></em>. Este cambio posiblemente permita hacer correr el emulador en tiempo real en un hardware modesto.</li>
</ol>
<p>Por último comentarle que si sus padres (o los reyes magos) en vez de un Spectrum le trajeron un MSX está  de suerte porque también existe <a href="http://jsmsxdemo.googlepages.com/jsmsx.html" target="_blank">un emulador para MSX en javascript</a>. Espero que con este ejemplo  haya sacado conclusiones que pueda poner en práctica en futuros proyectos.</p>


 Powered by HelloGoogle.com

<p>Artículos relacionados:<ol><li><a href='http://www.hellogoogle.com/formularios_xhtml_css_javascript/' rel='bookmark' title='Permanent Link: Cómo mejorar los formularios HTML con Xhtml, Css y Javascript'>Cómo mejorar los formularios HTML con Xhtml, Css y Javascript</a></li><li><a href='http://www.hellogoogle.com/javascript_no_intrusivo_ejemplo/' rel='bookmark' title='Permanent Link: Javascript no intrusivo, un ejemplo mágico.'>Javascript no intrusivo, un ejemplo mágico.</a></li><li><a href='http://www.hellogoogle.com/real-ajax-sexy-curls/' rel='bookmark' title='Permanent Link: Real Ajax Sexy Curls: Una forma elegante de mostrar el código fuente de nuestra página'>Real Ajax Sexy Curls: Una forma elegante de mostrar el código fuente de nuestra página</a></li></ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.hellogoogle.com/un-emulador-de-zx-spectrum-en-javascript/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Javascript no intrusivo, un ejemplo mágico.</title>
		<link>http://www.hellogoogle.com/javascript_no_intrusivo_ejemplo/</link>
		<comments>http://www.hellogoogle.com/javascript_no_intrusivo_ejemplo/#comments</comments>
		<pubDate>Fri, 26 Sep 2008 08:35:49 +0000</pubDate>
		<dc:creator>Ignacio Gorostiza</dc:creator>
				<category><![CDATA[Javascript]]></category>

		<guid isPermaLink="false">http://www.hellogoogle.com/javascript_no_intrusivo_ejemplo/</guid>
		<description><![CDATA[
Navegando por Internet he encontrado un curioso ejemplo de javascript no intrusivo que por su sencillez y espectacularidad me gustaría compartir con ustedes. Creo que antes de comenzar con ninguna explicación lo mejor será que lo prueben:


	Para ello vaya a su navegador favorito (google) y accedan a la sección de búsqueda de imágenes.


	Realicen la búsqueda [...]


Artículos relacionados:<ol><li><a href='http://www.hellogoogle.com/un-emulador-de-zx-spectrum-en-javascript/' rel='bookmark' title='Permanent Link: Un emulador de ZX Spectrum en Javascript'>Un emulador de ZX Spectrum en Javascript</a></li><li><a href='http://www.hellogoogle.com/formularios_xhtml_css_javascript/' rel='bookmark' title='Permanent Link: Cómo mejorar los formularios HTML con Xhtml, Css y Javascript'>Cómo mejorar los formularios HTML con Xhtml, Css y Javascript</a></li><li><a href='http://www.hellogoogle.com/ajax-zoomy-lightbox/' rel='bookmark' title='Permanent Link: Ajax zoomy: Un Ajax lightbox para su galería de imágenes'>Ajax zoomy: Un Ajax lightbox para su galería de imágenes</a></li></ol>]]></description>
			<content:encoded><![CDATA[<div class="captionfull"><center><a href="http://www.hellogoogle.com/wp-content/uploads/2008/09/javascript_no_intrusivo.jpg" ><img src='http://www.hellogoogle.com/wp-content/uploads/2008/09/javascript_no_intrusivo.jpg' alt='Javascript no intrusivo, un ejemplo mágico.' title="Javascript no intrusivo, un ejemplo mágico." /></a></center></div>

<p>Navegando por Internet he encontrado un curioso ejemplo de <strong>javascript no intrusivo</strong> que por su sencillez y espectacularidad me gustaría compartir con ustedes. Creo que antes de comenzar con ninguna explicación lo mejor será que lo prueben:</p>

<ul>
	<li>Para ello vaya a su navegador favorito (google) y accedan a la <a href="http://images.google.es/imghp?hl=es&#038;tab=wi" target="_blank">sección de búsqueda de imágenes</a>.</li>


	<li>Realicen la búsqueda que prefieran, por ejemplo "hellogoogle" y pulse en buscar para ver todos los resultados.</li>


	<li>Una vez llegado a este punto copie la siguiente linea de código y péguela en su navegador (Como si se tratara de la dirección de una web):
<p><code>
javascript:R=0; x1=.1; y1=.05; x2=.25; y2=.24; x3=1.6; y3=.24; x4=300; y4=200; x5=300; y5=200; DI=document.images; DIL=DI.length; function A(){for(i=0; i-DIL; i++){DIS=DI[ i ].style; DIS.position='absolute'; DIS.left=Math.sin(R*x1+i*x2+x3)*x4+x5; DIS.top=Math.cos(R*y1+i*y2+y3)*y4+y5}R++}setInterval('A()',5); void(0); </code></p>
</li>

	<li>Pulse enter...¿Sorprendido?</li>
</ul>

<p>Aunque a pesar de su sencillez es un efecto muy espectacular,  no se trata de ningún truco de prestidigitación. La explicación hay que buscarla en el <strong>javascript no intrusivo</strong>, si analizamos el código para ver cómo se consigue este efecto puede sacar algunas conclusiones interesantes:</p>

<ul>
	<li>En primer lugar hay que tener presente que el código javascript se ejecuta <strong>después haber cargado una página web</strong> en el navegador. En nuestro caso era la página de resultados de una búsqueda de imágenes.</li> 
<li>Cuando un navegador web carga una página crea una estructura de objetos en memoria denominada <strong>DOM </strong>(<a href="http://es.wikipedia.org/wiki/DOM" target="_blank">Document Object Model</a>). Esta modelo de objetos puede ser consultado e incluso modificado a través de un lenguaje de scripting como javascript.</li>
<li>Por ejemplo en el array document.images se almacena una referencia a cada imagen del documento:
<code>DI=document.images //Array con las imagenes del DOM</code><li>
<li>Podemos determinar fácilmente la longitud de este Array con el atributo <em>length </em> para poder recorrerlo con un bucle <em>for</em>:
<code> DIL=DI.length
for(i=0; i-DIL; i++)
{
...
}
</code></li>
<li>Los atributos de cada una de las imágenes de la página puede ser modificado con javascript accediendo al DOM:
<code>DIS=DI[ i ].style; // Obtenemos una referencia al atributo style</code> </li>
<li>Así podemos modificar el atributo <em>position</em> que por defecto es <em>block</em> a <em>absolute </em>. Un elemento con posicionamiento <em>absolute </em> puede ser posicionado en cualquier coordinada de la página a través de los atributos <em>top </em>y <em>left</em>:
<code>
DIS.position='absolute'; //Modificamos el posicionamiento a absolute
DIS.left=Math.sin(R*x1+i*x2+x3)*x4+x5; //Actualizamos el atributo left
DIS.top=Math.cos(R*y1+i*y2+y3)*y4+y5}R++} /Actualizamos el atributo top
</code>
</li>
<li>
Por último se crea de un temporizador con la función <em>setInterval </em>que ejecuta cada 5 milisegundos la <em>función A</em> que es la que realiza el movimiento de las imágenes modificando sus atributos <em>top</em> y <em>left</em>:
<code>setInterval('A()',5); void(0);</code>
</li>
<li>
<u>nota:</u> Aunque no tiene relación directa  con el javascript no intrusivo la función que realiza el movimiento de las imágenes es una función <a href="http://es.wikipedia.org/wiki/H%C3%A9lice_(geometr%C3%ADa)" target="blank">helicoidal</a>. Variando los parámetros de la función podemos conseguir que las imágenes describan otros parábolas:
<code>
javascript:R=0; x1=.01; y1=.005; x2=.025; y2=.24; x3=1.6; y3=.24; x4=300; y4=200; x5=300;y5=200;DI=document.getElementsByTagName("img"); DIL=DI.length; function A(){for(i=0; i-DIL; i++){DIS=DI[ i ].style; DIS.position='absolute'; DIS.left=(Math.sin(R*x1+i*x2+x3)*x4+x5)+"px"; DIS.top=(Math.cos(R*y1+i*y2+y3)*y4+y5)+"px"}R++}setInterval('A()',5); void(0);</code>
</li>
</ul>

<p>La utilidad del javascript no intrusivo no se limitan a este tipo de ejemplos curiosos, si no que es una herramienta de gran importancia a la hora de realizar webs accedibles que no dependan de que el navegador del visitante soporte o no javascript. Esto lo veremos sin duda en próximos artículos.</p>

<p>Fuente de la noticia original: This is <a href="http://www.destructoid.com/forum/viewtopic.php?t=1271" target="_blank">freaking insane</a>. </p>

<p>Nota: Este artículo ha sido indexado por Google en 4 minutos, nunca dejarás de sorprenderme baby.</p> Powered by HelloGoogle.com

<p>Artículos relacionados:<ol><li><a href='http://www.hellogoogle.com/un-emulador-de-zx-spectrum-en-javascript/' rel='bookmark' title='Permanent Link: Un emulador de ZX Spectrum en Javascript'>Un emulador de ZX Spectrum en Javascript</a></li><li><a href='http://www.hellogoogle.com/formularios_xhtml_css_javascript/' rel='bookmark' title='Permanent Link: Cómo mejorar los formularios HTML con Xhtml, Css y Javascript'>Cómo mejorar los formularios HTML con Xhtml, Css y Javascript</a></li><li><a href='http://www.hellogoogle.com/ajax-zoomy-lightbox/' rel='bookmark' title='Permanent Link: Ajax zoomy: Un Ajax lightbox para su galería de imágenes'>Ajax zoomy: Un Ajax lightbox para su galería de imágenes</a></li></ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.hellogoogle.com/javascript_no_intrusivo_ejemplo/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Google Heat Maps: Añada color en sus mapas de Google</title>
		<link>http://www.hellogoogle.com/google_heat_maps/</link>
		<comments>http://www.hellogoogle.com/google_heat_maps/#comments</comments>
		<pubDate>Sun, 12 Aug 2007 16:44:06 +0000</pubDate>
		<dc:creator>Ignacio Gorostiza</dc:creator>
				<category><![CDATA[Desarrollo web]]></category>
		<category><![CDATA[Google Maps]]></category>
		<category><![CDATA[Javascript]]></category>

		<guid isPermaLink="false">http://www.hellogoogle.com/google_heat_maps/</guid>
		<description><![CDATA[Hacía tiempo que venía observando webs 2.0 ( pejm: http://www.trulia.com/home_prices/ ) que utilizaban Heat Maps para mostrar de una manera muy sencilla y clara información geográfica. Cuando revisé el Api de Google para ver cómo se podía conseguir este efecto, me llamó la atención que no estaba soportado de manera nativa y que era necesario [...]


Artículos relacionados:<ol><li><a href='http://www.hellogoogle.com/real-ajax-sexy-curls/' rel='bookmark' title='Permanent Link: Real Ajax Sexy Curls: Una forma elegante de mostrar el código fuente de nuestra página'>Real Ajax Sexy Curls: Una forma elegante de mostrar el código fuente de nuestra página</a></li><li><a href='http://www.hellogoogle.com/ajax-zoomy-lightbox/' rel='bookmark' title='Permanent Link: Ajax zoomy: Un Ajax lightbox para su galería de imágenes'>Ajax zoomy: Un Ajax lightbox para su galería de imágenes</a></li><li><a href='http://www.hellogoogle.com/un-emulador-de-zx-spectrum-en-javascript/' rel='bookmark' title='Permanent Link: Un emulador de ZX Spectrum en Javascript'>Un emulador de ZX Spectrum en Javascript</a></li></ol>]]></description>
			<content:encoded><![CDATA[<div class="captionfull" align="center"><img src="http://www.hellogoogle.com/wp-content/uploads/2007/08/google_heat_maps.jpg" alt="Google Heat Maps" width="501" height="303" title="Google Heat Maps: Añada color en sus mapas de Google" /></div>
Hacía tiempo que venía observando webs 2.0 ( pejm: <a href="http://www.trulia.com/home_prices/">http://www.trulia.com/home_prices/</a> ) que utilizaban Heat Maps para mostrar de una manera muy sencilla y clara información geográfica. Cuando revisé el Api de Google para ver cómo se podía conseguir este efecto, me llamó la atención que no estaba soportado de manera nativa y que era necesario realizarlo de una manera más o menos artesanal.
<h3>El código</h3>
En la <a href="http://www.hellogoogle.com/examples/google_heat_maps/">siguiente página</a> he preparado un ejemplo donde he destacado algunos países europeos con colores elegidos al azar.
<h3>Cómo se crea una silueta</h3>
Para mostrar líneas y polígonos en los mapas se utiliza <a href="http://www.w3.org/TR/NOTE-VML">VML (Vector Markup Language),</a> recuerde incluir  el VML namespace al comienzo de su documento:

<code><span class="tag">&lt;html </span><span class="atn">xmlns</span><span class="tag">=</span><span class="atv">"http://www.w3.org/1999/xhtml"</span><span class="tag"> xmlns:v=</span><span class="atv">"urn:schemas-microsoft-com:vml"</span><span class="tag">&gt;</span></code>

La clase <a href="http://www.google.com/apis/maps/documentation/reference.html#GPolygon">GPolygon</a> del API de Google Maps ofrece funciones para dibujar polígonos en el mapa.

Para nuestro ejemplo he creado la función <em>createPolygon</em> que permite dibujar una silueta vectorial en el mapa pasando tres parámetos:
<ol>
	<li><em>pts_map</em>: Codificación de las coordenadas de los puntos que conforman el polígono.</li>
	<li><em>lvls_map</em>: Codificación de los niveles que conforman el polígono.</li>
	<li><em>num</em>: Valor entre 1 y 6, cada valor tiene  un color para la silueta.</li>
</ol>
<h3>Cómo obtener los valores de la silueta</h3>
A fecha de hoy no conozco ninguna herramienta que permita obtener de manera automática estos valores por lo que es necesario recurrir a un método un tanto artesanal:
<ol>
	<li>Acceda a la sección <em>Mis Mapas</em> en <a href="http://maps.google.es/">http://maps.google.es/</a> y haga click en la opción <em>Crear un mapa nuevo</em>.</li>
	<li>Ahora viene el trabajo más tedioso, en la zona superior del mapa encontrará un icono para dibujar formas, selecciónelo y comience a pintar los puntos que delimitan la región sobre la que quiere trabajar. Recuerde que cuanto mayor sea el zoom, mejor será la calidad del Heat Map.</li>
	<li>Cuando haya terminado haga doble click y elija un nombre para guardar el polígono.</li>
	<li>En la esquina superior derecha encontrará la opción <em>Enlazar a esta página</em>, copie esta url en su navegador.</li>
	<li>En la nueva página, busque dentro del código HTML el nombre que le dio a su polígono hasta encontrar una cadena similar a esta:
<code>name:"Forma 1",description:"",polylines:[{id:"0",points:"ol|oFxbaS~df@h`]rqNmfg@qxp@o_d@a~Cren@",levels:"BBBBB"</code></li>
	<li>Por tanto la codificación de las coordenadas de nuestro polígono sería: <strong>[{id:"0",points:"ol|oFxbaS~df@h`]rqNmfg@qxp@o_d@a~Cren@</strong> y la codificación de los niveles: <strong>BBBBB</strong></li>
	<li>El código javascript correspondiente sería:
<code>createPolygon("ol|oFxbaS~df@h`]rqNmfg@qxp@o_d@a~Cren@","BBBBB",5) </code></li>
</ol>
<h3>Algunas observaciones</h3>
Debe tener en cuenta que los Heat Maps consumen bastante resursos de su sistema, un mapa con muchos polígonos o con formas muy complejas pueden sobrecargar el navagador y hacer la página inmanejable.

Puede personalizar el estilo de sus Heats Maps con algunos parámetros como el color, la opacidad, el borde, el relleno, etc. Para ello utilice la función <em>fromEncoded(color?, weight?, opacity?, points, zoomFactor, levels, numLevels)</em>

Puede <a href="http://www.hellogoogle.com/examples/google_heat_maps/google_heat_maps.rar">descargarse el código de ejemplo</a> y utilizarlo líbremente en sus aplicaciones.

Por último recuerde que para poder utilizar el API de Google Maps en sus aplicaciones es necesario que solicite su Key en la sección <a href="http://www.google.com/apis/maps/signup.html">sign up for an API key</a>. Powered by HelloGoogle.com

<p>Artículos relacionados:<ol><li><a href='http://www.hellogoogle.com/real-ajax-sexy-curls/' rel='bookmark' title='Permanent Link: Real Ajax Sexy Curls: Una forma elegante de mostrar el código fuente de nuestra página'>Real Ajax Sexy Curls: Una forma elegante de mostrar el código fuente de nuestra página</a></li><li><a href='http://www.hellogoogle.com/ajax-zoomy-lightbox/' rel='bookmark' title='Permanent Link: Ajax zoomy: Un Ajax lightbox para su galería de imágenes'>Ajax zoomy: Un Ajax lightbox para su galería de imágenes</a></li><li><a href='http://www.hellogoogle.com/un-emulador-de-zx-spectrum-en-javascript/' rel='bookmark' title='Permanent Link: Un emulador de ZX Spectrum en Javascript'>Un emulador de ZX Spectrum en Javascript</a></li></ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.hellogoogle.com/google_heat_maps/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Ajax Lightbox: Una ventana emergente 2.0 en su página web</title>
		<link>http://www.hellogoogle.com/efecto_ajax_lightbox_javascript_css/</link>
		<comments>http://www.hellogoogle.com/efecto_ajax_lightbox_javascript_css/#comments</comments>
		<pubDate>Mon, 14 May 2007 21:35:22 +0000</pubDate>
		<dc:creator>Ignacio Gorostiza</dc:creator>
				<category><![CDATA[Ajax]]></category>
		<category><![CDATA[Desarrollo web]]></category>
		<category><![CDATA[Javascript]]></category>

		<guid isPermaLink="false">http://www.hellogoogle.com/efecto_ajax_lightbox_javascript_css/</guid>
		<description><![CDATA[Durante el desarrollo de mi &#250;ltimo proyecto he tenido la suerte de conocer un fant&#225;stico efecto 2.0 desarrollado por Lokesh Dhakar. Se trata de un efecto Lightbox que permite mostrar espectaculares pop-ups con im&#225;genes y grupos de im&#225;genes. Las caracter&#237;sticas&#160;del c&#243;digo original no eran suficientes para&#160;el proyecto en el que trabajaba, as&#237; que tuve que [...]


Artículos relacionados:<ol><li><a href='http://www.hellogoogle.com/ajax-zoomy-lightbox/' rel='bookmark' title='Permanent Link: Ajax zoomy: Un Ajax lightbox para su galería de imágenes'>Ajax zoomy: Un Ajax lightbox para su galería de imágenes</a></li><li><a href='http://www.hellogoogle.com/real-ajax-sexy-curls/' rel='bookmark' title='Permanent Link: Real Ajax Sexy Curls: Una forma elegante de mostrar el código fuente de nuestra página'>Real Ajax Sexy Curls: Una forma elegante de mostrar el código fuente de nuestra página</a></li><li><a href='http://www.hellogoogle.com/ajax-accesible-para-google/' rel='bookmark' title='Permanent Link: AJAX Accesible para Google: Posicionar contenido en Ajax'>AJAX Accesible para Google: Posicionar contenido en Ajax</a></li></ol>]]></description>
			<content:encoded><![CDATA[<p>Durante el desarrollo de mi &uacute;ltimo proyecto he tenido la suerte de conocer un fant&aacute;stico efecto 2.0 desarrollado por Lokesh Dhakar. Se trata de un efecto Lightbox que permite mostrar espectaculares pop-ups con im&aacute;genes y grupos de im&aacute;genes. Las caracter&iacute;sticas&nbsp;del c&oacute;digo original no eran suficientes para&nbsp;el proyecto en el que trabajaba, as&iacute; que tuve que ampliarlo para que fuera capaz de mostrar pop-ups que cargaran din&aacute;micamente de un fichero. De este modo naci&oacute; el que he bautizado como <a href="http://www.hellogoogle.com/examples/ajax_lightbox/">Ajax LightBox</a>, espero que les sea de tanta utilidad como a mi.</p> <h2>Qu&eacute; es Ajax Lightbox</h2> <p>Ajax&nbsp;Lightbox es un script <em>no intrusivo </em>que permite mostrar una ventana&nbsp;por encima del contenido actual de una p&aacute;gina. El t&eacute;rmino <em>no intrusivo </em>se utiliza para denominar al c&oacute;digo javascript que no se ejecuta inmerso en el HTML si no que se aplica de manera indirecta una vez cargado el documento, permitiendo conseguir independizar completamente&nbsp; &ldquo;Contenido, Presentaci&oacute;n y Comportamiento. Comentar tambi&eacute;n que un script no intrusivo permite cumplir con el punto de verificaci&oacute;n 6.3 de las normas de accesibilidad WCAG (prioridad 1, necesario para nivel A):</p> <p><em>&quot;Ensure that pages are usable when scripts, applets, or other programmatic objects are turned off or not supported. If this is not possible, provide equivalent information on an alternative accessible page.&quot;&nbsp;</em></p> <p>Como puede observar en el siguiente <a href="http://www.hellogoogle.com/examples/ajax_lightbox/">ejemplo</a>, usted puede visualizar tres tipos diferentes de ventanas:</p> <ul> 	<li>Contenido din&aacute;mico extraido v&iacute;a Ajax de un fichero.</li> 	<li>Im&aacute;genes individuales.</li> 	<li>Grupos de im&aacute;genes.</li> </ul> <p>Si conoce algo de javascript y css puede personalizar el efecto para ajustarlo a sus necesidades:</p> <p>Ha sido testeado en las &uacute;ltimas versiones de los navegadores m&aacute;s extendidos: IE/FireFox/Opera.</p> <h2>C&oacute;mo utilizarlo</h2> <h3>1. Configuraci&oacute;n</h3> <ol> 	<li> <p>Ajax Lightbox utiliza dos&nbsp;librer&iacute;as opensource: <em>Prototype</em> y&nbsp;<em>Scriptaculous</em>. Por tanto debe incluirlas en la cabecera de su p&aacute;gina:</p> <code>&lt;script type=&quot;text/javascript&quot; xsrc=&quot;js/prototype.js&quot; mce_src=&quot;js/prototype.js&quot;&gt;&lt;/script&gt;<br /> &lt;script type=&quot;text/javascript&quot; xsrc=&quot;js/scriptaculous.js?load=effects&quot; mce_src=&quot;js/scriptaculous.js?load=effects&quot;&gt;&lt;/script&gt;<br /> &lt;script type=&quot;text/javascript&quot; xsrc=&quot;js/lightbox.js&quot; mce_src=&quot;js/lightbox.js&quot;&gt;&lt;/script&gt;<br /> </code> <p>Puede modificar la librer&iacute;a<em> lightbox.js</em> para configurar algunos par&aacute;metros del efecto:</p> <em>fileLoadingImage:</em> Imagen de carga<br /> <em>overlayOpacity:</em> Nivel de transparencia de la capa<br /> <em>overlayvar animate: </em>Activa/Desactiva rescalable&nbsp; animations<br /> <em>resizeSpeed</em>: Controla la velocidad de rescalado de la imagen (1 = muy lento y 10 = muy r&aacute;pido)<br /> <em>borderSize</em>: Grosor del borde<br /> </li> 	<li>Incluya tambi&eacute;n la hoja de estilos&nbsp;lightbox.css&nbsp;a&ntilde;ada los estilos a la hoja de estilos actual de su Site. Puede modificar los estilos para cambiar las caracter&iacute;sticas del efecto (Colores, tama&ntilde;os, etc).<br /> <p><code>&lt;link rel=&quot;stylesheet&quot; xhref=&quot;css/lightbox.css&quot; mce_href=&quot;css/lightbox.css&quot; type=&quot;text/css&quot; media=&quot;screen&quot; /&gt; </code></p> <p>Es importante que compruebe dentro de la hoja de estilos que las im&aacute;genes est&aacute;n siendo referenciadas a las ubicaciones correctas.</p> </li> </ol> <h3>2. Activaci&oacute;n</h3> <ol> 	<li>&nbsp;A&ntilde;ada un atributo rel=&quot;lightbox_text&quot;&nbsp; a cualquier enlace que apunte a una p&aacute;gina web para activar el efecto:<br /> <p><code>&lt;a xhref=&quot;nota.htm&quot; mce_href=&quot;nota.htm&quot; rel=&quot;lightbox_text&quot; &gt;Ver nota&lt;/a&gt; </code></p> </li> 	<li>A&ntilde;ada un atributo &nbsp; rel=&quot;lightbox&quot; a cualquier enlace a una imagen en el que quiera activar el efecto. Puede incluir un atributo title si quiere visualizar un&nbsp;caption en la ventana:<br /> <p><code>&lt;a xhref=&quot;images/image-1.jpg&quot; mce_href=&quot;images/image-1.jpg&quot; rel=&quot;lightbox&quot; title=&quot;Los recursos de HelloGoogle son la pera&quot;&gt;imagen #1&lt;/a&gt;</code></p> </li> 	<li>Si quiere agrupar un conjunta de im&aacute;genes, incluya un nombre de grupo dentro de unos corchetes en el atributo rel:<br /> <p><code>&lt;a xhref=&quot;images/image-1.jpg&quot; mce_href=&quot;images/image-1.jpg&quot; rel=&quot;lightbox[mi_grupo]&quot;&gt;imagen #1&lt;/a&gt;<br /> &lt;a xhref=&quot;images/image-2.jpg&quot; mce_href=&quot;images/image-2.jpg&quot; rel=&quot;lightbox[mi_grupo]&quot;&gt;imagen #2&lt;/a&gt;<br /> &lt;a xhref=&quot;images/image-3.jpg&quot; mce_href=&quot;images/image-3.jpg&quot; rel=&quot;lightbox[mi_grupo]&quot;&gt;imagen #3&lt;/a&gt; </code></p> </li> </ol> <h2>Desc&aacute;rgueselo</h2> <p>El c&oacute;digo se ofrece bajo la licencia Creative Commons, esto significa que puede utilizarlo y modificarlo libremente en sus aplicaciones. Solamente debe mantener los cr&eacute;ditos tal y como est&aacute;n, para reconocer la labor de sus autores.</p> <p>Espero que este efecto le sea de tanta utilidad como a mi, y que a partir de ahora pueda sorprender a sus visitantes con este Ajax Lightbox 2.0.</p> <ul> 	<li><a href="http://www.hellogoogle.com/examples/ajax_lightbox/ajax_lightbox.rar"><strong>Ajax Lightbox <em>v1.0</em></strong></a></li> </ul> Powered by HelloGoogle.com

<p>Artículos relacionados:<ol><li><a href='http://www.hellogoogle.com/ajax-zoomy-lightbox/' rel='bookmark' title='Permanent Link: Ajax zoomy: Un Ajax lightbox para su galería de imágenes'>Ajax zoomy: Un Ajax lightbox para su galería de imágenes</a></li><li><a href='http://www.hellogoogle.com/real-ajax-sexy-curls/' rel='bookmark' title='Permanent Link: Real Ajax Sexy Curls: Una forma elegante de mostrar el código fuente de nuestra página'>Real Ajax Sexy Curls: Una forma elegante de mostrar el código fuente de nuestra página</a></li><li><a href='http://www.hellogoogle.com/ajax-accesible-para-google/' rel='bookmark' title='Permanent Link: AJAX Accesible para Google: Posicionar contenido en Ajax'>AJAX Accesible para Google: Posicionar contenido en Ajax</a></li></ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.hellogoogle.com/efecto_ajax_lightbox_javascript_css/feed/</wfw:commentRss>
		<slash:comments>70</slash:comments>
		</item>
		<item>
		<title>Selector combo dinámico en Ajax: localidades y provincias de España</title>
		<link>http://www.hellogoogle.com/selector_combo_ajax_provincias_localidades/</link>
		<comments>http://www.hellogoogle.com/selector_combo_ajax_provincias_localidades/#comments</comments>
		<pubDate>Tue, 13 Feb 2007 22:00:12 +0000</pubDate>
		<dc:creator>Ignacio Gorostiza</dc:creator>
				<category><![CDATA[Ajax]]></category>
		<category><![CDATA[Desarrollo web]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[XML]]></category>
		<category><![CDATA[Xpath]]></category>

		<guid isPermaLink="false">http://www.hellogoogle.com/selector_combo_ajax_provincias_localidades/</guid>
		<description><![CDATA[En diversos proyectos he tenido la necesidad de trabajar con un formulario en el que uno de los campos es un selector de provincias y localidades de Espa&#241;a. Tal vez usted tambi&#233;n haya tenido esta misma necesidad durante el desarrollo de un proyecto. En un enfoque tradicional ser&#237;a necesario cargar en memoria todas las provincias [...]


Artículos relacionados:<ol><li><a href='http://www.hellogoogle.com/ajax-zoomy-lightbox/' rel='bookmark' title='Permanent Link: Ajax zoomy: Un Ajax lightbox para su galería de imágenes'>Ajax zoomy: Un Ajax lightbox para su galería de imágenes</a></li><li><a href='http://www.hellogoogle.com/ajax-accesible-para-google/' rel='bookmark' title='Permanent Link: AJAX Accesible para Google: Posicionar contenido en Ajax'>AJAX Accesible para Google: Posicionar contenido en Ajax</a></li><li><a href='http://www.hellogoogle.com/efecto_ajax_lightbox_javascript_css/' rel='bookmark' title='Permanent Link: Ajax Lightbox: Una ventana emergente 2.0 en su página web'>Ajax Lightbox: Una ventana emergente 2.0 en su página web</a></li></ol>]]></description>
			<content:encoded><![CDATA[<p>En diversos proyectos he tenido la necesidad de trabajar con un formulario en el que uno de los campos es un selector de provincias y localidades de Espa&ntilde;a. Tal vez usted tambi&eacute;n haya tenido esta misma necesidad durante el desarrollo de un proyecto.</p> <p>En un enfoque tradicional ser&iacute;a necesario cargar en memoria todas las provincias y localidades, o dividir el proceso en dos fases: en la primera el usuario elegir&iacute;a su provincia para luego seleccionar su localidad en un segundo paso. Un ejemplo de este enfoque tradicional es la web de <a href="http://callejero.paginasamarillas.es" target="_blank">p&aacute;ginas amarillas</a>. Observe que el tiempo de carga de la p&aacute;gina es considerablemente elevado.</p> <p>Las nuevas t&eacute;cnicas de desarrollo <strong>web 2.0 </strong>nos ofrecen ahora la posibilidad de resolver este tipo de&nbsp; funcionalidades de una manera mucho m&aacute;s elegante y eficiente.</p> <p><strong>Ejemplo de combo din&aacute;mico en Ajax&nbsp;</strong></p> 
<div class="captionfull"><center><strong><a href="http://www.hellogoogle.com/examples/provincias_ajax/default.php" target="_blank"><img src="http://www.hellogoogle.com/wp-content/uploads/2007/02/combo_localidades.gif" alt="Combo de localidades" width="418" height="99" title="Selector combo dinámico en Ajax: localidades y provincias de España" /></a></strong></center></div>
<p>En un <strong>enfoque 2.0</strong> he desarrollado este <a href="http://www.hellogoogle.com/examples/provincias_ajax/default.php" target="_blank">ejemplo</a> en el que puede ver un&nbsp; formulario que permite al usuario seleccionar su localidad de manera muy r&aacute;pida y eficiente. <strong>Ajax </strong>nos permite&nbsp; trabajar con un documento <a href="http://www.hellogoogle.com/examples/provincias_ajax/provinciasypoblaciones.xml" target="_blank">XML de m&aacute;s de 2Mb</a> que contiene todas las localidades de Espa&ntilde;a, cargando en memoria &uacute;nicamente&nbsp;la informaci&oacute;n que necesitemos en cada momento.</p> <p>En el siguiente esquema se explica el funcionamiento de la aplicaci&oacute;n Ajax:</p> 
<div class="captionfull"><center><img src="http://www.hellogoogle.com/wp-content/uploads/2007/02/arquitectura_aplicacion_ajax.gif" alt="Arquitectura de la aplicaci&oacute;n provincias y localidades en Ajax" width="215" height="418" title="Selector combo dinámico en Ajax: localidades y provincias de España" /></center></div> 
<p>Esta funcionalidad consta de los siguientes archivos:</p> <ul> 	<li><strong>default.php</strong>: p&aacute;gina incial d&oacute;nde se generan din&aacute;micamente el combo de provincias&nbsp;a partir del XML general.</li> 	<li><strong>xml_data_provider.php</strong>: recorre el XML general y devuelve otro XML que contiene s&oacute;lo las localidades de la provincia escogida.</li> 	<li><strong>AjaxCode.js:&nbsp; </strong>funcionalidad Ajax que lee el XML con las localidades elegidas y crea din&aacute;micamente el combo de localidades.</li> 	<li><strong>provinciasypoblaciones.xml:</strong> Archivo XML que contiene todas las localidades y provincias de Espa&ntilde;a.</li> </ul> <p>Esta misma funcionalidad puede utilizarla para manejar cualquier XML de gran tama&ntilde;o que de otra forma se mostrar&iacute;a inmanejable y ralentizar&iacute;a mucho el tiempo de carga de su Site: fichas de clientes, un catalogo de productos, etc.</p> <p>El tiempo de carga de una p&aacute;gina y el consiguiente tiempo de espera de un usuario es uno de los factores m&aacute;s importantes en el rendimiento de una web. Tal y como se desprende del estudio sobre usabilidad realizado por <a href="http://www.bcr.com/architecture/network_forecasts%10sevcik/how_fast_is_fast_enough?_20030315225.htm" target="_blank">Peter Sevcik</a> en Julio de 2002, el tiempo de carga de una p&aacute;gina no debe dilatarse m&aacute;s de <strong>10 segundos</strong> para mantener el nivel de satisfaci&oacute;n del usuario dentro de los l&iacute;mites &oacute;ptimos. A partir de este l&iacute;mite el usuario empieza a percibir que la p&aacute;gina est&aacute; tardando en cargar y cuando se rebasa los 40 segundos la <strong>fustraci&oacute;n y p&eacute;rdida de interes </strong>del usuario por la p&aacute;gina aumenta de manera muy acusada.</p> <p><strong>El c&oacute;digo.</strong></p> <p>En el siguiente <a id="p18" href="http://www.hellogoogle.com/wp-content/uploads/2007/02/ajax_provincias_localidades.zip">archivo zip</a> dispone de todos los ficheros y recursos que conforman la aplicaci&oacute;n. Si&eacute;ntase libre de utilizarlo en su p&aacute;gina web. Si le result&oacute; de utilidad&nbsp; o encontr&oacute; cualquier problema le agradecer&iacute;a mucho conocer su feedback.</p> Powered by HelloGoogle.com

<p>Artículos relacionados:<ol><li><a href='http://www.hellogoogle.com/ajax-zoomy-lightbox/' rel='bookmark' title='Permanent Link: Ajax zoomy: Un Ajax lightbox para su galería de imágenes'>Ajax zoomy: Un Ajax lightbox para su galería de imágenes</a></li><li><a href='http://www.hellogoogle.com/ajax-accesible-para-google/' rel='bookmark' title='Permanent Link: AJAX Accesible para Google: Posicionar contenido en Ajax'>AJAX Accesible para Google: Posicionar contenido en Ajax</a></li><li><a href='http://www.hellogoogle.com/efecto_ajax_lightbox_javascript_css/' rel='bookmark' title='Permanent Link: Ajax Lightbox: Una ventana emergente 2.0 en su página web'>Ajax Lightbox: Una ventana emergente 2.0 en su página web</a></li></ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.hellogoogle.com/selector_combo_ajax_provincias_localidades/feed/</wfw:commentRss>
		<slash:comments>61</slash:comments>
		</item>
	</channel>
</rss>
