<?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>Codigo Manso &#187; javascript</title>
	<atom:link href="http://www.codigomanso.com/es/tag/javascript/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.codigomanso.com</link>
	<description>Programación, informática y tecnología</description>
	<lastBuildDate>Sun, 21 Aug 2011 10:54:29 +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>Truco Manso: formatear con ceros al principio de un número en javascript</title>
		<link>http://www.codigomanso.com/es/2010/07/simple-javascript-formatting-zero-padding/</link>
		<comments>http://www.codigomanso.com/es/2010/07/simple-javascript-formatting-zero-padding/#comments</comments>
		<pubDate>Fri, 30 Jul 2010 17:08:33 +0000</pubDate>
		<dc:creator>Pau Sanchez</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[formatting]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[padding]]></category>
		<category><![CDATA[truco manso]]></category>

		<guid isPermaLink="false">http://www.codigomanso.com/es/?p=907</guid>
		<description><![CDATA[Hasta ayer echaba en falta un método sencillo y legible para rellenar con ceros cualquier número o cadena en javascript.
Un ejemplo típico es cuando quieres mostrar la hora y quieres que el formato sea hh:mm. No hay ningún problema cuando son las 12:40, pero si es la una y cinco, se muestra 1:5 en vez [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Hasta ayer echaba en falta un método sencillo y legible para rellenar con ceros cualquier número o cadena en javascript.</p>
<p style="text-align: justify;">Un ejemplo típico es cuando quieres mostrar la hora y quieres que el formato sea hh:mm. No hay ningún problema cuando son las 12:40, pero si es la una y cinco, se muestra 1:5 en vez de 01:05. Lo mismo pasa con las fechas y en innumerables situaciones.</p>
<p style="text-align: justify;">Ayer me he encontré una solución que me parece la mejor que he visto hasta la fecha.</p>
<p style="text-align: justify;">Normalmente, tratándose de un cero, uno haría algo como:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">h <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>h <span style="color: #339933;">&lt;</span> <span style="color: #CC0000;">10</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">?</span> <span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;0&quot;</span> <span style="color: #339933;">+</span> h<span style="color: #009900;">&#41;</span> <span style="color: #339933;">:</span> h<span style="color: #339933;">;</span></pre></div></div>

<p style="text-align: justify;">Esto no es feo del todo, pero tampoco es elegante. Y que pasa si queremos 3 ceros? Podríamos hacer algo como:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">h <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>h <span style="color: #339933;">&lt;</span> <span style="color: #CC0000;">100</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">?</span> <span style="color: #009900;">&#40;</span> <span style="color: #009900;">&#40;</span>h <span style="color: #339933;">&gt;=</span> <span style="color: #CC0000;">10</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">?</span> <span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;0&quot;</span> <span style="color: #339933;">+</span> h<span style="color: #009900;">&#41;</span> <span style="color: #339933;">:</span> <span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;00&quot;</span> <span style="color: #339933;">+</span> h<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span> <span style="color: #339933;">:</span> h<span style="color: #339933;">;</span></pre></div></div>

<p style="text-align: justify;">Este código en un if/else seguro que queda más claro, pero aún así esto es una guarrada. Lo normal sería hacerse una función que rellene con ceros (o con cualquier otro caracter), y usar esa función.</p>
<p style="text-align: justify;">Una vez vista la solución más típica y feucha, es el momento de ver la solución mágica:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;0&quot;</span> <span style="color: #339933;">+</span> h<span style="color: #009900;">&#41;</span>.<span style="color: #660066;">slice</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">-</span><span style="color: #CC0000;">2</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>  <span style="color: #006600; font-style: italic;">// devolverá &quot;01&quot; si h=1; &quot;12&quot; si h=12</span>
<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;00&quot;</span> <span style="color: #339933;">+</span> h<span style="color: #009900;">&#41;</span>.<span style="color: #660066;">slice</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">-</span><span style="color: #CC0000;">3</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #006600; font-style: italic;">// &quot;001&quot; si h=1; &quot;012&quot; si h=12;&quot;123&quot; si h = 123</span></pre></div></div>

<p style="text-align: justify;">Lo que hace el código de arriba es concatenar &#8220;00&#8243; con el número (por ejemplo &#8220;00&#8243; + 12 = &#8220;0012&#8243;) y luego cogemos los 3 últimos caracteres empezando desde el final (de ahí el -3). Y los 3 últimos caracteres son: &#8220;012&#8243;</p>
<p style="text-align: justify;">No se a vosotros, pero yo cuando vi esta solución se me iluminó el cielo. ¡¡Que fácil!!</p>
<p style="text-align: justify;">Por cierto, también se puede usar para rellenar con espacios o con lo que se quiera.</p>
<p>Fuentes:</p>
<ul>
<li><a href="http://gugod.org/2007/09/padding-zero-in-javascript.html">Padding zero in Javascript</a></li>
<li><a href="http://dev.enekoalonso.com/2010/07/20/little-tricks-string-padding-in-javascript/">Little tricks: string padding in Javascript</a> en el blog de Eneko Alonso</li>
</ul>
<p><b>Update:</b> <a href="http://milan.adamovsky.com/">Milan Adamovsky</a> ha creado una página web en <a href="http://jsperf.com/zero-padding">http://jsperf.com/zero-padding</a> donde se puede ver el rendimiento de distintas funciones para hacer padding</p>
]]></content:encoded>
			<wfw:commentRss>http://www.codigomanso.com/es/2010/07/simple-javascript-formatting-zero-padding/feed/</wfw:commentRss>
		<slash:comments>39</slash:comments>
		</item>
		<item>
		<title>mansofk: el super mega ultra lightweight js framework</title>
		<link>http://www.codigomanso.com/es/2010/05/mansofk-el-super-mega-ultra-lightweight-js-framework/</link>
		<comments>http://www.codigomanso.com/es/2010/05/mansofk-el-super-mega-ultra-lightweight-js-framework/#comments</comments>
		<pubDate>Tue, 04 May 2010 19:01:40 +0000</pubDate>
		<dc:creator>Pau Sanchez</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Programacion]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[mooTools]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[js framework]]></category>
		<category><![CDATA[lightweight]]></category>
		<category><![CDATA[mansofk]]></category>

		<guid isPermaLink="false">http://www.codigomanso.com/es/?p=869</guid>
		<description><![CDATA[Me hacía falta un framework de javascript que fuese capaz de cambiar el CSS de los elementos, que fuese capaz de hacer peticiones AJAX,  capaz de cargar javascripts o CSS externos, capaz de añadir o cambiar HTML sobre la marcha, capaz de capturar eventos, capaz de realizar animaciones y capaz de evitar colisiones con otros [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Me hacía falta un framework de javascript que fuese capaz de cambiar el CSS de los elementos, que fuese capaz de hacer peticiones AJAX,  capaz de cargar javascripts o CSS externos, capaz de añadir o cambiar HTML sobre la marcha, capaz de capturar eventos, capaz de realizar animaciones y capaz de evitar colisiones con otros frameworks o incluso con sigo mismo, y además, que fuera superligero y funcionara en IE6+, FF, Safari, Chrome y Opera.</p>
<p style="text-align: justify;">Al final, después de cansarme de buscar y buscar, lo he programado yo, y en honor al blog, he decidido llamarlo <strong>manso framework</strong>. <strong>mansofk</strong> para los amigos.</p>
<p style="text-align: justify;">Al final he conseguido meter toda esta funcionalidad en tan sólo 1.5KB.</p>
<p>Las funcionalidades principales son:</p>
<ul>
<li>Fácil renombrar el framework para evitar colisiones</li>
<li>Soporta encadenamiento de llamadas</li>
<li>Soporta la carga de componentes externos de forma dinámica
<ul>
<li>Soporta cargar CSS externos dinámicamente</li>
<li>Soporta cargar javascript externos dinámicamente</li>
</ul>
</li>
<li>Manipulaciones DOM sencillas
<ul>
<li>Seleccionar elementos por ID</li>
<li>Añadir elementos</li>
<li>Reemplazar elementos</li>
</ul>
</li>
<li>Manipular el estilo CSS de los elementos
<ul>
<li>Obtener una propiedad del estilo actual de un elemento</li>
<li>Cambiar una propiedad del estilo de un elemento</li>
<li>Cambiar varias propiedades a la vez</li>
</ul>
</li>
<li>Animaciones CSS sencillas
<ul>
<li>Soporta varios atributos a la vez</li>
<li>Varios parametros, entre ellos la duración e incluso los frames por segundo</li>
<li>Es posible seleccionar la función linear y la cúbica</li>
</ul>
</li>
<li>Soporte de eventos
<ul>
<li>bind</li>
<li>unbind</li>
</ul>
</li>
<li>Llamadas AJAX
<ul>
<li>Con POST</li>
<li>Con GET</li>
<li>Con soporte XML</li>
<li>Con soporte JSON</li>
<li>Con soporte texto plano</li>
</ul>
</li>
<li>Superligero
<ul>
<li>3.3 KB minified</li>
<li>1.5 KB gzipped!</li>
</ul>
</li>
</ul>
<p style="text-align: justify;">Sois libres de usar este framework para lo que os venga en gana, pero no me responsabilizo de nada.</p>
<p style="text-align: justify;">A continuación teneis la versión sin comprimir, y la versión reducida con <a href="http://closure-compiler.appspot.com/home" target="_blank">Google Closure Compiler</a>:</p>
<ul style="text-align: justify;">
<li style="text-align: justify;"><a href="http://www.codigomanso.com/archives/mansofk/mansofk-1.0.min.js" target="_self">mansofk-1.0.min.js</a> (3.3 KB para usar en producción, si usas gzip ocupa sólo 1.5KB)</li>
<li style="text-align: justify;"><a href="http://www.codigomanso.com/archives/mansofk/mansofk-1.0.js" target="_self">mansofk-1.0.js</a> (11KB para usar durante el desarrollo)</li>
</ul>
<p style="text-align: justify;">Ale, pues ya está. Lo suyo sería hacer  una demo, pero como ahora mismo tengo otras cosas que hacer, me lo dejo  para otra ocasión.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.codigomanso.com/es/2010/05/mansofk-el-super-mega-ultra-lightweight-js-framework/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>[SOLUCIONADO] Uploadify y los problemas con las sessiones</title>
		<link>http://www.codigomanso.com/es/2010/03/uploadify-and-session-problems-solved/</link>
		<comments>http://www.codigomanso.com/es/2010/03/uploadify-and-session-problems-solved/#comments</comments>
		<pubDate>Fri, 05 Mar 2010 09:10:09 +0000</pubDate>
		<dc:creator>Pau Sanchez</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Programacion]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[cookies]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[session]]></category>
		<category><![CDATA[uploadify]]></category>

		<guid isPermaLink="false">http://www.codigomanso.com/es/?p=836</guid>
		<description><![CDATA[
Uploadify es un magnífico plugin para jQuery que te permite subir varios archivos a la vez mediante flash, de forma totalmente transparente (podeis ver una demo en este enlace).
Realmente, la gran ventaja que yo le veo no es la de subir varios archivos a la vez,esto ya se puede hacer con javascript a pelo, la [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;"><a href="http://www.uploadify.com"><img class="aligncenter" title="Uploadify" src="http://www.uploadify.com/_images/uploadify-logo.jpg" alt="" width="560" height="90" /></a></p>
<p style="text-align: justify;"><a href="http://www.uploadify.com" target="_blank">Uploadify</a> es un magnífico plugin para jQuery que te permite subir varios archivos a la vez mediante flash, de forma totalmente transparente (podeis ver una <a href="http://www.uploadify.com/demo/" target="_blank">demo en este enlace</a>).</p>
<p style="text-align: justify;">Realmente, la gran ventaja que yo le veo no es la de subir varios archivos a la vez,esto ya se puede hacer con javascript a pelo, la gran ventaja es que añade una barra de progreso para que el usuario no se desespere.</p>
<p style="text-align: justify;">Además de subir archivos, también se pueden mandar otros datos a la vez que se suben las imágenes (usando <a href="http://www.uploadify.com/documentation/" target="_blank">scriptData</a>). Lo cual puede ser muy útil si se quiere por ejemplo, mandar los datos de un formulario a la vez que se sube un archivo.</p>
<p style="text-align: justify;">El gran inconveniente de uploadify, es que manda cada archivo por separado. Es decir, si quieres subir 30 archivos, manda cada archivo en una petición HTTP distinta. El problema no es la velocidad, puesto que se pueden paralelizar las subidas, el problema son las distintas peticiones si tienes que adjuntar datos. El hecho de que sean distintas peticiones complica un poco la lógica en el servidor en según que casos&#8230;</p>
<p style="text-align: justify;">En fin, recientemente he usado uploadify en un proyecto donde los usuarios debían estar registrados para poder subir archivos. Claro, registrados y logueados en el sistema. El tema es que tras implementar la subida de archivos, no funcionaba&#8230; y no funcionaba&#8230; y casi me vuelvo loco, hasta que me di cuenta de que uploadify no envia las cookies, y  lógicamente sin cookies el servidor no tiene forma de cargar las variables de sesión, y por tanto, de saber qué usuario está intentando subir qué, y dado que el servidor no tiene forma de saber si es o no un usuario registrado, devuelve un mensaje de error. Total, que una vez detectado el problema de las cookies la solución ha sido simple.</p>
<p style="text-align: justify;">La solución para mantener la sesión con uploadify (y en general cuando el cliente no tiene cookies), es añadir a la URL de subida el nombre de sesión y el identificador de sesión.</p>
<p style="text-align: justify;">En PHP añadir esto a la URL sería algo, tal que:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$url</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$url</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">'?'</span> <span style="color: #339933;">.</span> <span style="color: #990000;">session_name</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">'='</span> <span style="color: #339933;">.</span> <span style="color: #990000;">session_id</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Una vez hecho esto, problema resuelto <img src='http://www.codigomanso.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.codigomanso.com/es/2010/03/uploadify-and-session-problems-solved/feed/</wfw:commentRss>
		<slash:comments>43</slash:comments>
		</item>
		<item>
		<title>Efecto de click para jQuery</title>
		<link>http://www.codigomanso.com/es/2010/02/click-effect-in-javascript-for-jquery/</link>
		<comments>http://www.codigomanso.com/es/2010/02/click-effect-in-javascript-for-jquery/#comments</comments>
		<pubDate>Wed, 03 Feb 2010 14:57:52 +0000</pubDate>
		<dc:creator>Pau Sanchez</dc:creator>
				<category><![CDATA[Diseño]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[effect]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[plugin]]></category>

		<guid isPermaLink="false">http://www.codigomanso.com/es/?p=823</guid>
		<description><![CDATA[Hoy he estado haciendo unos cuantos experimentos con javascript. La verdad es que no he llegado a donde quería llegar, pero voy a asumir que es debido a que mi capacidad de diseño está atrofiada (y por suerte compensada en otras habilidades).
En fin, lo que estaba intentando hacer es algo como un efecto de click. [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Hoy he estado haciendo unos cuantos experimentos con javascript. La verdad es que no he llegado a donde quería llegar, pero voy a asumir que es debido a que <a href="http://www.codigomanso.com/es/2009/03/pensamientos-sobre-diseno-y-usabilidad">mi capacidad de diseño está atrofiada</a> (y por suerte compensada en otras habilidades).</p>
<p style="text-align: justify;">En fin, lo que estaba intentando hacer es algo como un efecto de click. Me explico. Lo que quería que ocurriera, es que cuando el usuario hiciera click en un enlace, se produjera como una especie de linea de expansión. Pongo un ejemplo. Has visto el tipico anuncio de la Wii, donde al principio aparecen como tres o cuatro círculos concéntricos que se dispersan hasta desaparecer? Pues algo así, pero para cuando el usuario hiciera click con el ratón en una web.</p>
<p style="text-align: justify;">Al final de trastear un rato, hacer unos cuantos experimentos con imágenes, y seguir trasteando con animaciones sencillas, creo que he llegado a una primera aproximación que mas o menos se parece a lo que yo quería.</p>
<ul>
<li><a href="http://www.codigomanso.com/archives/html/click-simulator-example/index.html" target="_blank">Ver el efecto en vivo y en directo</a> (demo)</li>
<li><a href="http://www.codigomanso.com/archives/html/click-simulator-example/jSimulateClick.js">Descargar el plugin de jSimulateClick </a></li>
</ul>
<p>Básicamente, el ejemplo tiene 2 fragmentos interesantes (tampoco hay más en el html):</p>
<p>El primer fragmento es el que asocia el evento de click a todos los elementos que tienen la clase &#8216;clickable-round&#8217;. Cuando hagas click dentro de un elemento de esa clase, aparecerá un círculo que se irá difuminando.
</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'.clickable-round'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">click</span> <span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span> <span style="color: #009900;">&#40;</span>event<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
 $<span style="color: #009900;">&#40;</span>event.<span style="color: #660066;">currentTarget</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">jSimulateClick</span> <span style="color: #009900;">&#40;</span>event.<span style="color: #660066;">pageX</span> <span style="color: #339933;">-</span> <span style="color: #CC0000;">1</span><span style="color: #339933;">,</span> event.<span style="color: #660066;">pageY</span> <span style="color: #339933;">-</span> <span style="color: #CC0000;">1</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'round'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>          
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>El segundo fragmento, asocia el evento de click a los elementos de la clase &#8216;clickable-square&#8217;. Cuando hagas click en cualquiera de estos elementos, el efecto será similar al anterior, pero en vez de mostrar un círculo, mostará un rectángulo que va, desde donde hayas hecho click, hasta cubrir el área del elemento en cuestión:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'.clickable-square'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">click</span> <span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span> <span style="color: #009900;">&#40;</span>event<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  $<span style="color: #009900;">&#40;</span>event.<span style="color: #660066;">currentTarget</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">jSimulateClick</span> <span style="color: #009900;">&#40;</span>event.<span style="color: #660066;">pageX</span> <span style="color: #339933;">-</span> <span style="color: #CC0000;">1</span><span style="color: #339933;">,</span> event.<span style="color: #660066;">pageY</span> <span style="color: #339933;">-</span> <span style="color: #CC0000;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>          
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Si quieres trastear el plugin, los parámetros con los que se puede trastear son el color del borde, el tamaño inicial del borde, la duración de la animación, &#8230;</p>
<p>Este javascript se puede usar para aplicaciones personales, comerciales y para lo que se quiera.</p>
<p>Finalmente, agradecería cualquier comentario para mejorar el efecto.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.codigomanso.com/es/2010/02/click-effect-in-javascript-for-jquery/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>jcontroller: Controlador para javascript con jQuery</title>
		<link>http://www.codigomanso.com/es/2010/01/jcontroller-controlador-para-javascript-con-jquery/</link>
		<comments>http://www.codigomanso.com/es/2010/01/jcontroller-controlador-para-javascript-con-jquery/#comments</comments>
		<pubDate>Wed, 27 Jan 2010 09:32:49 +0000</pubDate>
		<dc:creator>Pau Sanchez</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Programacion]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jcontroller]]></category>
		<category><![CDATA[jquery]]></category>

		<guid isPermaLink="false">http://www.codigomanso.com/es/?p=809</guid>
		<description><![CDATA[Hace tiempo que no escribo, así que he pensado, voy a coger (agarrar para los argentinos) algo que haya hecho en los últimos días para algún proyecto, y voy a hacer un post, que estoy perdiendo usuarios, y esto no se puede permitir :p
El caso es que últimamente he notado que el código en javascript [...]]]></description>
			<content:encoded><![CDATA[<p>Hace tiempo que no escribo, así que he pensado, voy a coger (agarrar para los argentinos) algo que haya hecho en los últimos días para algún proyecto, y voy a hacer un post, que estoy perdiendo usuarios, y esto no se puede permitir :p</p>
<p>El caso es que últimamente he notado que el código en javascript que estaba escribiendo era un poco caotico, sobretodo cuando en la página había varios eventos, etc&#8230; Si comprendes lo que quiero decir, es que es un buen momento de que dejes tu también de hacerlo <img src='http://www.codigomanso.com/wp-includes/images/smilies/icon_neutral.gif' alt=':|' class='wp-smiley' /> </p>
<p>Total, que me dije: &#8220;tio, puedes hacer dos cosas&#8221;</p>
<ul>
<li>Puedes buscarte un buen controlador o plugin para jQuery (<a href="http://www.bennadel.com/projects/cormvc-jquery-framework.htm">CorMVC</a>),  o incluso buscar un framework como <a style="color: #2200cc;" onmousedown="return clk(this.href,'','','res','1','','0CAoQFjAA')" href="http://javascriptmvc.com/">JavaScriptMVC</a> o <a href="http://jamal-mvc.com/">Jamal</a></li>
<li>O puedes cometer la estupidez de hacer tu propio controlador para javascript</li>
</ul>
<p>El lector avispado se habrá dado cuenta de lo estúpido que soy.</p>
<p>Pues nada, os presento <a href="http://www.codigomanso.com/archives/html/jcontroller/jcontroller.js">jcontroller</a> y su <a href="http://www.codigomanso.com/archives/html/jcontroller/jcontroller.min.js">versión minificada</a> (con <a href="http://yuilibrary.com/downloads/#yuicompressor">yuicompressor</a>).</p>
<p>Tiene tests (que no incluyo), pero básicamente se pasan en Firefox, Chrome e Internet Explorer. Un segundo que no me cuesta nada&#8230; también funciona en Opera. Vale, pues mira por donde que parece que se lleva bien con los browsers (asumo que funciona en Safari).</p>
<p>Entremos en materia:</p>
<p><strong><span style="text-decoration: underline;">¿En qué consiste jcontroller?</span></strong></p>
<p>Básicamente sirve para no tener una maraña de código y <strong>controlar</strong> un poco las acciones que realizar según los eventos del usuario (normalmente los clicks).</p>
<p>Como contar más cosas es una tontería, os voy a enseñar un ejemplo y ya cada cual que haga lo que le parezca. En este momento es cuando yo paro de escribir el post para hacer el ejemplo en mi ordenador. Este post ha surgido tan repentinamente que no tenía nada preparado&#8230; <img src='http://www.codigomanso.com/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> </p>
<p>Vale, el ejemplo chorra ya está preparado, sólo comento lo principal:</p>
<ul>
<li>Nada se ejecuta sólo, hay que iniciar el controlador con  la función &#8220;init&#8221;. Si le das el nombre &#8220;controller&#8221; pues &#8220;controller.init()&#8221;</li>
<li>El controlador ejecutará la función &#8216;_init&#8217; que hayamos definido en nuestra implementación, al principio.</li>
<li>Las funciones que empiezan con &#8216;_&#8217; son privadas y no pueden ser ejecutadas desde fuera (excepto _init, _default y _clear)</li>
<li>El controlador automáticamente, cuando se carga, mira lo que hay en la parte de hash &#8216;#&#8217; de la URL, y llama a la función que considere apropiada</li>
<li>Aunque ahora mismo funciona todo para detectar los enlaces tipo &#8216;#whatever&#8217;, se puede implementar el &#8220;trigger controller&#8221; que quieras, devolviendo una función en tu implementación de &#8216;_init&#8217; (ignora este parrafo de momento)</li>
<li>Se pueden definir tantos controladores como quieras, cada uno es independiente a los demás, aunque si todos usan el mismo &#8220;trigger controller&#8221; todos se van a ejecutar a la vez (ignora este parrafo de momento)</li>
</ul>
<p>Aquí os dejo los enlaces principales:</p>
<ul>
<li><a href="http://www.codigomanso.com/archives/html/jcontroller/examples/jcontroller01.html" target="_blank">Ejemplo</a></li>
<li><a href="http://www.codigomanso.com/archives/html/jcontroller/examples/jcontroller01.html#message-1" target="_self">Ejemplo#message-1</a></li>
<li><a href="http://www.codigomanso.com/archives/html/jcontroller/examples/jcontroller01.html#message-2" target="_blank">Ejemplo#message-2</a></li>
</ul>
<p>Realmente el ejemplo es muy chorra, jcontroller en sí es muy chorra, echadle un vistazo.</p>
<p><strong>Nota:</strong> Ahora mismo usa jQuery, pero no creo que lleve más de 10 minutos cambiarlo por otro framework</p>
<p>Finalmente os vuelvo a poner los enlaces, para quien se lo quiera descargar:</p>
<ul>
<li><a href="http://www.codigomanso.com/archives/html/jcontroller/jcontroller.js">jcontroller.js</a> (6.6 KB)</li>
<li><a href="http://www.codigomanso.com/archives/html/jcontroller/jcontroller.min.js">jcontroller.min.js</a> (1.2 KB)</li>
<li>Si lo comprimes con gzip son sólo 552 bytes :p</li>
</ul>
<p>Pues nada más que contar por el momento.</p>
<p>Las críticas constructivas son bienvenidas y las destructivas ignoradas.</p>
<p>Un saludo <img src='http://www.codigomanso.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.codigomanso.com/es/2010/01/jcontroller-controlador-para-javascript-con-jquery/feed/</wfw:commentRss>
		<slash:comments>25</slash:comments>
		</item>
		<item>
		<title>Escalar una imagen manteniendo el aspecto</title>
		<link>http://www.codigomanso.com/es/2009/03/escalar-una-imagen-manteniendo-el-aspecto/</link>
		<comments>http://www.codigomanso.com/es/2009/03/escalar-una-imagen-manteniendo-el-aspecto/#comments</comments>
		<pubDate>Fri, 27 Mar 2009 20:10:52 +0000</pubDate>
		<dc:creator>Pau Sanchez</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[aspect ratio]]></category>
		<category><![CDATA[aspecto]]></category>
		<category><![CDATA[escalar]]></category>
		<category><![CDATA[imagenes]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.codigomanso.com/es/?p=621</guid>
		<description><![CDATA[Muchas veces es necesario escalar una imagen para que se mantenga dentro de unos límites y pueda visualizarse correctamente. Es mucho mejor si la imagen no se deforma. En estos casos hay que hacer un escalado manteniendo el aspect ratio.
Hoy día hay cientos de librerias para cualquier lenguaje que realizan un escalado. La única pregunta [...]]]></description>
			<content:encoded><![CDATA[<p>Muchas veces es necesario escalar una imagen para que se mantenga dentro de unos límites y pueda visualizarse correctamente. Es mucho mejor si la imagen no se deforma. En estos casos hay que hacer un escalado manteniendo el aspect ratio.</p>
<p>Hoy día hay cientos de librerias para cualquier lenguaje que realizan un escalado. La única pregunta es, ¿cuales deben ser el nuevo ancho y largo de la imagen?</p>
<p>A continuación el código mágico que está probado en javascript, pero que debe funcionar en PHP, python, java, perl, C, y lo que le pongas por delate <img src='http://www.codigomanso.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>w <span style="color: #339933;">&lt;</span> h<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  h <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>h <span style="color: #339933;">*</span> maxWidth<span style="color: #009900;">&#41;</span> <span style="color: #339933;">/</span> w<span style="color: #339933;">;</span>
  w <span style="color: #339933;">=</span> maxWidth<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">else</span> <span style="color: #009900;">&#123;</span>
  w <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>w <span style="color: #339933;">*</span> maxHeight<span style="color: #009900;">&#41;</span> <span style="color: #339933;">/</span> h<span style="color: #339933;">;</span>
  h <span style="color: #339933;">=</span> maxHeight<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p><b>w</b> representa el ancho o width de la imagen</p>
<p><b>h</b> representa el alto o height de la imagen</p>
<p><b>maxWidth</b> la anchura máxima del área en la que se quiere meter la imagen</p>
<p><b>maxHeight</b> la altura máxima del área en la que se quiere meter la imagen</p>
<p>Como ejemplo final, aunque es prácticamente copy paste, imaginad que quereis meter una imágen de tamaño (w, h) en un área de 640&#215;480:</p>
<pre lang=java">
var maxWidth = 640, maxHeight = 480;
if (w > maxWidth || h > maxHeight) {
  if (w < h) {
    h = (h * maxWidth) / w;
    w = maxWidth;
  }
  else {
    w = (w * maxHeight) / h;
    h = maxHeight;
  }
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.codigomanso.com/es/2009/03/escalar-una-imagen-manteniendo-el-aspecto/feed/</wfw:commentRss>
		<slash:comments>37</slash:comments>
		</item>
		<item>
		<title>Sale jQuery 1.3.2, solucionando bugs</title>
		<link>http://www.codigomanso.com/es/2009/02/sale-jquery-132-solucionando-bugs/</link>
		<comments>http://www.codigomanso.com/es/2009/02/sale-jquery-132-solucionando-bugs/#comments</comments>
		<pubDate>Sat, 21 Feb 2009 11:57:25 +0000</pubDate>
		<dc:creator>Pau Sanchez</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[jquery 1.3.2]]></category>
		<category><![CDATA[release]]></category>

		<guid isPermaLink="false">http://www.codigomanso.com/es/?p=575</guid>
		<description><![CDATA[Acaban de publicar la versión 1.3.2 de jQuery, que viene a solucionar varios bugs y mejorar el rendimiento en algunas partes.
Los cambios más importantes son:

 Elements are now returned in document order.
 .live() can now prevent bubbling.
 :visible/:hidden are now significantly faster.
 As are all the width/height methods.
 Selectors are much faster in Internet Explorer.
 [...]]]></description>
			<content:encoded><![CDATA[<p>Acaban de publicar la versión 1.3.2 de jQuery, que viene a solucionar varios bugs y mejorar el rendimiento en algunas partes.</p>
<p>Los cambios más importantes son:</p>
<ul>
<li> Elements are now returned in document order.</li>
<li> .live() can now prevent bubbling.</li>
<li> :visible/:hidden are now significantly faster.</li>
<li> As are all the width/height methods.</li>
<li> Selectors are much faster in Internet Explorer.</li>
<li> appendTo/etc. have had a slight API tweak.</li>
</ul>
<p>Así que ya sabeis, hay que actualizarse <img src='http://www.codigomanso.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Enlaces:</p>
<ul>
<li><a href="http://code.google.com/p/jqueryjs/downloads/detail?name=jquery-1.3.2.min.js" target="_blank">Descargar jQuery 1.3.2 minified</a></li>
<li><a href="http://code.google.com/p/jqueryjs/downloads/detail?name=jquery-1.3.2.js" target="_blank">Descargar jQuery 1.3.2</a></li>
<li><a href="http://blog.jquery.com/2009/02/20/jquery-132-released/" target="_blank">Anuncio del release en el blog oficial</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.codigomanso.com/es/2009/02/sale-jquery-132-solucionando-bugs/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>Donde está el cursor?</title>
		<link>http://www.codigomanso.com/es/2009/02/where-is-the-cursor-or-cursor-in-a-textarea-or-input/</link>
		<comments>http://www.codigomanso.com/es/2009/02/where-is-the-cursor-or-cursor-in-a-textarea-or-input/#comments</comments>
		<pubDate>Fri, 13 Feb 2009 09:13:28 +0000</pubDate>
		<dc:creator>Pau Sanchez</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Programacion]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[caret]]></category>
		<category><![CDATA[cursor]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://www.codigomanso.com/es/?p=548</guid>
		<description><![CDATA[Buscando y buscando, me acabo de encontrar con una web que tiene un ejemplo muy interesante y que nos dice dónde está el cursor en un input o textarea en cada momento, y además permite saber cual es el texto seleccionado (si es que lo hay).
La verdad es que no es algo que a uno [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://javascript.nwbox.com/cursor_position/" style="float:left; margin: 0 8px 4px 0;"><img src="http://www.codigomanso.com/wp-content/uploads/2009/02/where-is-the-cursor.png" alt="Where is the cursor?" title="Where is the cursor?" width="300" height="290" class="alignnone size-full wp-image-552" /></a>Buscando y buscando, me acabo de encontrar con una web que tiene un ejemplo muy interesante y que nos dice <a href="http://javascript.nwbox.com/cursor_position/">dónde está el cursor en un input o textarea en cada momento</a>, y además permite saber cual es el texto seleccionado (si es que lo hay).</p>
<p>La verdad es que no es algo que a uno le haga falta todos los días, pero a mi me hacía falta y me ha resuelto el problema.</p>
<p>En el ejemplo que hay en dicha página se usan las funciones <b>getSelectionStart</b> y <b>getSelectionEnd</b>. La primera nos dice donde está el cursor, mientras que la segunda nos dice dónde finaliza la selección (siempre y cuando getSelectionEnd devuelva un valor distinto a getSelectionStart).</p>
<p>A continuación teneis estas dos funciones:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">function</span> getSelectionStart<span style="color: #009900;">&#40;</span>o<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
 <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>o.<span style="color: #660066;">createTextRange</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
   <span style="color: #003366; font-weight: bold;">var</span> r <span style="color: #339933;">=</span> document.<span style="color: #660066;">selection</span>.<span style="color: #660066;">createRange</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">duplicate</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
   r.<span style="color: #660066;">moveEnd</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'character'</span><span style="color: #339933;">,</span> o.<span style="color: #660066;">value</span>.<span style="color: #660066;">length</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
   <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>r.<span style="color: #660066;">text</span> <span style="color: #339933;">==</span> <span style="color: #3366CC;">''</span><span style="color: #009900;">&#41;</span> <span style="color: #000066; font-weight: bold;">return</span> o.<span style="color: #660066;">value</span>.<span style="color: #660066;">length</span><span style="color: #339933;">;</span>
   <span style="color: #000066; font-weight: bold;">return</span> o.<span style="color: #660066;">value</span>.<span style="color: #660066;">lastIndexOf</span><span style="color: #009900;">&#40;</span>r.<span style="color: #660066;">text</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 <span style="color: #009900;">&#125;</span>
 <span style="color: #000066; font-weight: bold;">else</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000066; font-weight: bold;">return</span> o.<span style="color: #660066;">selectionStart</span><span style="color: #339933;">;</span>
 <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #003366; font-weight: bold;">function</span> getSelectionEnd<span style="color: #009900;">&#40;</span>o<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
 <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>o.<span style="color: #660066;">createTextRange</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
 <span style="color: #003366; font-weight: bold;">var</span> r <span style="color: #339933;">=</span> document.<span style="color: #660066;">selection</span>.<span style="color: #660066;">createRange</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">duplicate</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 r.<span style="color: #660066;">moveStart</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'character'</span><span style="color: #339933;">,</span> <span style="color: #339933;">-</span>o.<span style="color: #660066;">value</span>.<span style="color: #660066;">length</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 <span style="color: #000066; font-weight: bold;">return</span> r.<span style="color: #660066;">text</span>.<span style="color: #660066;">length</span><span style="color: #339933;">;</span>
 <span style="color: #009900;">&#125;</span> <span style="color: #000066; font-weight: bold;">else</span> <span style="color: #009900;">&#123;</span>
   <span style="color: #000066; font-weight: bold;">return</span> o.<span style="color: #660066;">selectionEnd</span><span style="color: #339933;">;</span>
 <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://www.codigomanso.com/es/2009/02/where-is-the-cursor-or-cursor-in-a-textarea-or-input/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>Obtener el PageRank de Google usando sólo javascript (II)</title>
		<link>http://www.codigomanso.com/es/2009/01/get-google-pagerank-using-only-javascript-ii/</link>
		<comments>http://www.codigomanso.com/es/2009/01/get-google-pagerank-using-only-javascript-ii/#comments</comments>
		<pubDate>Thu, 22 Jan 2009 13:37:13 +0000</pubDate>
		<dc:creator>Pau Sanchez</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Programacion]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[page rank]]></category>

		<guid isPermaLink="false">http://www.codigomanso.com/es/?p=466</guid>
		<description><![CDATA[En el post anterior básicamente conté que esto de hacer peticiones cross-domain tiene muuuuchos problemas y que aún con los problemas que hay hoy iba a poner la solución para obtener el PageRank usando sólo javascript.
Claramente os tomé el pelo ;p
Que noooooooo!! A ver, todo lo que conté ayer es verdad. No se puede obtener [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;"><a href="http://www.codigomanso.com/es/2009/01/obtener-el-pagerank-de-google-usando-solo-javascript-i/">En el post anterior</a> básicamente conté que esto de hacer peticiones cross-domain tiene muuuuchos problemas y que aún con los problemas que hay hoy iba a poner la solución para obtener el PageRank usando sólo javascript.</p>
<p style="text-align: justify;">Claramente os tomé el pelo ;p</p>
<p style="text-align: justify;">Que noooooooo!! A ver, todo lo que conté ayer es verdad. No se puede obtener el valor de las peticiones cross-domain a no ser que se usen algunos trucos (lo del proxy PHP, &#8230;), por lo que estrictamente hablando el código que obtiene el PageRank sigue sin saber cual es el Page Rank, sin embargo, sí puede mostrar ese PageRank adecuadamente, y eso es lo que hace el script.</p>
<p style="text-align: justify;">Por no andarme con rodeos, a continuación teneis un iframe donde podeis poner la web que querais y os mostrará su PageRank. Os prometo que sólo utiliza javascript (mas abajo el código).</p>
<p><iframe src="http://www.codigomanso.com/archives/html/get-pagerank/embed-pagerank.html" style="width: 100%; border: none; padding: 0; margin: 0; overflow: hidden; height: 10em;"></iframe></p>
<p style="text-align: center;">
<a href="http://www.codigomanso.com/archives/html/get-pagerank/pagerank.html" target="_blank">Ver la demo en una ventana nueva</a></p>
<p style="text-align: justify;">Básicamente lo que hace el script es calcular una serie de checksums de la página web introducida, actualizar unos campos en un formulario y enviar ese mismo formulario usando GET, y cargando el resultado devuelto por Google en un iframe. Ese iframe no se puede manipular de ninguna de las maneras, y si en vez de usar lo del iframe, se hace con AJAX, el resultado es el mismo.</p>
<p style="text-align: justify;">El truco, hack, chapuza o como lo querais llamar, es que el PageRank aparece después de una cadena (que por los tests realizados es &#8220;Rank_1:1:&#8221;). Lo que hace el script es calcular (mas o menos) donde estará el número de PR en esa cadena y mueve el iframe para que sólo salga ese último número.</p>
<p style="text-align: justify;">Debo reconocer que hacer esto con javascript es bastante chapuza, aunque la ventaja es que se sigue viendo el PR de una web, y todas las peticiones a Google corren a cargo de los propios navegadores web. Tampoco descarto que algunas personas puedan tener algún problema al visualizar el PR en su navegador, en tal caso el script necesitaría algunas adaptaciones y sois totalmente libres de hacerlas.</p>
<p style="text-align: justify;">A continuación teneis el código de <a href="http://www.codigomanso.com/archives/html/get-pagerank/getpagerank.js" target="_blank">getpagerank.js</a>, el script que calcula los checksums y obtiene el Page Rank de Google. Podeis echar un vistazo al código de <a href="http://www.codigomanso.com/archives/html/get-pagerank/pagerank.html" target="_blank">pagerank.html</a> para ver como funciona todo.</p>
</p>
<p style="text-align:justify;">Finalmente, por si alguien quiere embeder la página en su web, el código es el siguiente</p>
<p><code><br />
<iframe src="http://www.codigomanso.com/archives/html/get-pagerank/embed-pagerank.html" style="border:none;"></iframe><br />
</code></p>
<p style="text-align:justify;">Bueno, <b>¿Que os ha parecido?</b> ¿os ha gustado? ¿estais decepcionados? ¿lo veis demasiado chapuza?</p>
<hr/>
<p style="text-align: justify;"><b>Proximamente en CodigoManso</b> explicaré <strong><em>como hacer peticiones cross-domain con javascript y pasar información de unos servidores a otros </em></strong><em>(esto ya no será en plan chapuza, lo prometo).</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.codigomanso.com/es/2009/01/get-google-pagerank-using-only-javascript-ii/feed/</wfw:commentRss>
		<slash:comments>191</slash:comments>
		</item>
		<item>
		<title>Obtener el PageRank de Google usando sólo javascript (I)</title>
		<link>http://www.codigomanso.com/es/2009/01/obtener-el-pagerank-de-google-usando-solo-javascript-i/</link>
		<comments>http://www.codigomanso.com/es/2009/01/obtener-el-pagerank-de-google-usando-solo-javascript-i/#comments</comments>
		<pubDate>Wed, 21 Jan 2009 11:47:32 +0000</pubDate>
		<dc:creator>Pau Sanchez</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Programacion]]></category>
		<category><![CDATA[get pagerank]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[obtener el pagerank]]></category>
		<category><![CDATA[page rank]]></category>

		<guid isPermaLink="false">http://www.codigomanso.com/es/?p=402</guid>
		<description><![CDATA[Hace unas semanas, durante las vacaciones de navidad, resulta me encontré en tu función el código en PHP para obtener el Page Rank de Google de una página cualquiera (estará contento con los keywords del link).
Ni corto ni perezoso, aún a sabiendas que habría algun problema me dije:
&#8220;tienes que pasar ese código a javascript y [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Hace unas semanas, durante las vacaciones de navidad, resulta me encontré en <a href="http://www.tufuncion.com" target="_blank">tu función</a> el <a href="http://www.tufuncion.com/pagerank-php" target="_blank">código en PHP para obtener el Page Rank de Google de una página cualquiera</a> (estará contento con los keywords del link).</p>
<p style="text-align: justify;">Ni corto ni perezoso, aún a sabiendas que habría algun problema me dije:</p>
<p style="padding-left: 30px; text-align: justify;"><strong>&#8220;tienes que pasar ese código a javascript y poner un enlace en la web. Seguro que atraes más visitas&#8221;.</strong></p>
<p style="text-align: justify;"><em>¿Que acabó pasando?</em> Que tengo el código pasado a javascript, hace la petición a Google, Google devuelve el page rank pero oh magia!! la cadena devuelta hay que parsearla un poco, y no puedo ni leerla, ni parsearla ni manipularla de ninguna de las maneras, y he intentado muchas cosas, pero básicamente se trata de políticas de seguridad en los navegadores (que comprendo perfectamente) y no hay nada que hacer  (ohhhhhhhhhhhh).</p>
<p style="text-align: justify;">Y es que se puede hacer una petición para cargar contenidos html de otros dominios en un iframe de nuestra página html, incluso usando AJAX (vease haciendo una petición XMLHttpRequest o usando un ActiveXObject(&#8216;Microsoft.XMLHTTP&#8217;), según convenga), sin embargo o puede acceder a ellos de ninguna de las maneras.</p>
<p style="text-align: justify;">La verdad que investigue mucho sobre el tema del cross-domain, y aprendí mucho en el camino, lamentablemente la conclusion fue clara, no intentes nunca con javascript integrar contenidos cross-domain en tu web, porque no vas a poder. Es una putada, pero es así.  Se puede conseguir usando un &#8220;proxy&#8221; en tu servidor, o bien usando flash, pero no era mi objetivo.</p>
<p style="text-align: justify;">Una vez llegados a esta conclusión, <em><strong>en el próximo post os pongo el código para obtener el PageRank de Google usando sólo javascript</strong></em>. Si señores, se puede decir que &#8220;lo he conseguido&#8221; (de una forma muy poco elegante, y que dará que hablar, todo sea dicho), pero saca el numerito de PageRank <img src='http://www.codigomanso.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p style="text-align: justify;">Acabo de probar el código en Opera/Safari/FF3/IE7 y parece que funciona el truco en todos. Vease el siguiente screenshot:</p>
<p style="text-align: justify;"><img class="aligncenter size-full wp-image-469" title="Screenshot sobre como obtener el Page Rank de Google con javascript" src="http://www.codigomanso.com/wp-content/uploads/2009/01/get_page_rank_with_javascript.png" alt="Screenshot sobre como obtener el Page Rank de Google con javascript" width="354" height="112" /></p>
<p style="text-align: justify;">Ale, ahora que ya se que funciona,  os dejo con la intriga. Mañana más ;p</p>
]]></content:encoded>
			<wfw:commentRss>http://www.codigomanso.com/es/2009/01/obtener-el-pagerank-de-google-usando-solo-javascript-i/feed/</wfw:commentRss>
		<slash:comments>251</slash:comments>
		</item>
	</channel>
</rss>

