<?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>Front-End Zen &#187; javascript</title>
	<atom:link href="http://blog.inspiroh.com/tag/javascript/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.inspiroh.com</link>
	<description>El rincón para compartir los mejores secretos del desarrollo Front-End, y de la vida en general</description>
	<lastBuildDate>Thu, 27 Oct 2011 16:15:30 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Diferencia entre dom:loaded y window.onload</title>
		<link>http://blog.inspiroh.com/diferencia-entre-domloaded-y-window-onload/</link>
		<comments>http://blog.inspiroh.com/diferencia-entre-domloaded-y-window-onload/#comments</comments>
		<pubDate>Mon, 26 Sep 2011 16:34:22 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[Front-End]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[prototype]]></category>

		<guid isPermaLink="false">http://blog.inspiroh.com/?p=358</guid>
		<description><![CDATA[Uno de los métodos más potentes y usados para controlar los tiempos de carga y ejecución de nuestros scripts en la página, es el uso del Event.observe de Prototype. Con la línea siguiente: Event.observe(window, 'load', function() {}); Podremos ejecutar algo una vez la página esté completamente cargada. Muy útil si queremos asegurar por ejemplo que [...]]]></description>
			<content:encoded><![CDATA[<p>Uno de los métodos más potentes y usados para controlar los tiempos de carga y ejecución de nuestros scripts en la página, es el uso del <em>Event.observe</em> de Prototype.</p>
<p>Con la línea siguiente:</p>
<pre class="js">Event.observe(window, 'load', function() {});</pre>
<p>Podremos ejecutar algo una vez la página esté completamente cargada. Muy útil si queremos asegurar por ejemplo que un div al que queremos interactuar está ya cargada en la página, o si queremos realizar cualquier acción tras la carga completa de la página. Esto es que están todos los elementos del DOM renderizados y todo el resto de elementos web cargados también: js, css e imágenes incluidos. Las peticiones AJAX no entrarían en este saco ya que son peticiones asíncronas y no se carga secuencialmente en el waterfall de la carga de la página.</p>
<p>Hasta aquí todo perfecto. Pero también tenemos otra condición que se usa mucho que es:</p>
<pre class="js">document.observe('dom:loaded', function(){});</pre>
<p>Esta línea es muy similar a la anterior pero no son exactamente iguales. ¿En qué se diferencian?</p>
<p><span id="more-358"></span></p>
<h3>Similares pero no iguales</h3>
<p>¿Cuál es la diferencia? Pues en el caso del<em> &#8216;dom:loaded&#8217;</em>, éste avisa de cuándo están todos los elementos DOM cargados, independientemente de si están todas las imágenes descargadas.</p>
<p>Conocer la diferencia de estas dos técnicas de control de carga permitirá dominar con más precisión cómo y cuándo queremos ejecutar nuestros scripts, y podremos mejorar la velocidad de carga de la página, y prevenir posibles bugs.</p>
<p>&nbsp;</p>
<h3>Con jQuery es lo mismo</h3>
<p>Antes he mencionado de los métodos que se usan en Prototype, pero con jQuery ocurre exactamente lo mismo. La sintaxis varía ligeramente, eso sí. La relación sería la siguiente:</p>
<pre class="js">// Carga del window.onload
// En Prototype
Event.observe(window, 'load', function() {});
// En jQuery
$(window).load(function(){});

// Carga del dom
// En Prototype
document.observe('dom:loaded', function(){});
// En jQuery
$(document).ready(function(){});</pre>
<p>&nbsp;</p>
<p>Los listeners son una herramienta muy potente, y no solo sirven para observar la carga de la página sino que se le puede dar muchos más usos.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.inspiroh.com/diferencia-entre-domloaded-y-window-onload/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Optimizar y minimizar javascript en Eclipse</title>
		<link>http://blog.inspiroh.com/optimizar-y-minimizar-javascript-en-eclipse/</link>
		<comments>http://blog.inspiroh.com/optimizar-y-minimizar-javascript-en-eclipse/#comments</comments>
		<pubDate>Thu, 28 Jul 2011 15:58:39 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[Front-End]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[minify]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[plugin]]></category>

		<guid isPermaLink="false">http://blog.inspiroh.com/?p=321</guid>
		<description><![CDATA[He encontrado un plugin de Eclipse que permite optimizar y minimizar los JS con tal solo un clic. Se llama Rockstar Optimizer &#38; Amazon WS Tools y realmente es muy sencillo de usar. Con las primeras pruebas que he hecho he tenido muy buenas sensaciones. Los pasos para instalar el plugin son*: Ir a &#8220;Help [...]]]></description>
			<content:encoded><![CDATA[<p>He encontrado un plugin de Eclipse que permite optimizar y minimizar los JS con tal solo un clic. Se llama <strong>Rockstar Optimizer &amp; Amazon WS Tools </strong>y realmente es muy sencillo de usar. Con las primeras pruebas que he hecho he tenido muy buenas sensaciones.</p>
<h3></h3>
<h3>Los pasos para instalar el plugin son*:</h3>
<ol>
<li>Ir a &#8220;Help -&gt; Install New Software -&gt; Add&#8221;</li>
<li>Introducir datos
<ol>
<li>Name: &#8220;Rockstar Optimizer&#8221;</li>
<li>Url: &#8220;<strong>http://update.rockstarapps.com</strong>﻿&#8221;</li>
</ol>
</li>
<li>En la lista que se carga debajo, checkear los componentes que quieres instalar (yo puse todos)</li>
<li>Ir dando al botón NEXT hasta finalizar la instalación.</li>
<li>Te pedirá que resetees el Eclipse. &#8220;Yes&#8221;.</li>
</ol>
<p><a rel="attachment wp-att-322" href="http://blog.inspiroh.com/optimizar-y-minimizar-javascript-en-eclipse/rockstarapps/"><img class="alignnone" title="Instalar Rockstarapps" src="http://blog.inspiroh.com/wp-content/uploads/2011/07/rockstarapps.gif" alt="" width="600" /></a></p>
<p><em>* La versión Eclipse que he usado para instalar el plugin es &#8220;Eclipse IDE for JavaScript Web Developers. Version: Helios Service Release 1. Build id: 20100917-0705&#8243;</em></p>
<p><span id="more-321"></span></p>
<h3></h3>
<h3>Cómo usar Rockstar Optimizer</h3>
<p>Una vez instalado el plugin, es muy fácil de usar. Tan solo has de seleccionar el archivo JS (o los archivos JS) que quieres comprimir y/o minimizar y darle al botón derecho. Aparecerá una opción nueva denominada &#8220;Rockstarapps&#8221;. Dentro de esta opción aparecerán las diferentes acciones que puedes aplicar como:</p>
<ul>
<li>Comprimir Javascript</li>
<li>Validar JsLint</li>
<li>Concatenar Javascripts (si seleccionaste varios)</li>
</ul>
<p>La primera acción de comprimir es la que más me interesa y está bastante bien porque la acción es altamente personalizable. Te da a elegir diferentes modos de compresión como el <a title="YUI Compressor" href="http://developer.yahoo.com/yui/compressor/" target="_blank">YUI Compressor</a>, o el <a title="Closure Compiler" href="http://code.google.com/p/closure-compiler/" target="_blank">Closure Complier de Google</a>. Después hay una serie de opciones para configurar el nivel de compresión y validación que se quiere aplicar.</p>
<p>&nbsp;</p>
<h3>La ventajas de añadir un paso &#8220;Build&#8221; en la fase de desarrollo</h3>
<p>Optimizar los ficheros JS y reducir el número de peticiones está en el orden del día. En la actualidad hay una gran variedad de opciones y alternativas para realizar un &#8220;Build&#8221;. Se pueden crear procesos Ant en el Eclipse o Netbeans, se puede incluso automatizar este proceso para que lo haga el propio servidor, existen herramientas online que te minimiza y comprime cualquier script o fichero JS, etc.</p>
<p>Lo que me ha gustado de este plugin Rockstar Optimizer es su facilidad de uso y que está integrado en el editor que uso a diario para programar.</p>
<p>¿Lo has usado? ¿Cuál es tu impresión?</p>
<p>&nbsp;</p>
<p>Fuente: <a href="http://update.rockstarapps.com/index.html" target="_blank">rockstarapps</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.inspiroh.com/optimizar-y-minimizar-javascript-en-eclipse/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Best practice JS: HTML usando JS o no</title>
		<link>http://blog.inspiroh.com/best-practice-js-html-usando-js-o-no/</link>
		<comments>http://blog.inspiroh.com/best-practice-js-html-usando-js-o-no/#comments</comments>
		<pubDate>Thu, 26 May 2011 07:28:05 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[Front-End]]></category>
		<category><![CDATA[crockford]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[metodologia]]></category>

		<guid isPermaLink="false">http://blog.inspiroh.com/?p=294</guid>
		<description><![CDATA[El otro día tuve una reunión con mi equipo, y uno de los temas que tratamos fue repasar nuestra metodología de desarrollo en Javascript. Tener clara dicha metodología para mí resulta clave ya que somos 6 programadores Front-End que estamos tocando el mismo código, el mismo framework. Y como no sigamos todos unas guidelines (guías [...]]]></description>
			<content:encoded><![CDATA[<p>El otro día tuve una reunión con mi equipo, y uno de los temas que tratamos fue repasar nuestra metodología de desarrollo en Javascript. Tener clara dicha metodología para mí resulta clave ya que somos 6 programadores Front-End que estamos tocando el mismo código, el mismo framework. Y como no sigamos todos unas <em>guidelines </em>(guías de líneas ), mal vamos&#8230;</p>
<p>Para dicha reunión recopilé un par de frases que encontré por Internet y que me resultaron conceptos muy interesantes. Dicen así:</p>
<blockquote><p>HTML que tenga sentido sin JS no debería ser creado por JS.</p></blockquote>
<blockquote><p>HTML que únicamente tenga sentido con JS debería ser generado por JS.</p></blockquote>
<p>Es un concepto sencillo de entender pero no tan sencillo de aplicar. Entender el concepto permitirá al programador tomar decisiones más acertadas de cuándo o dónde han de generar el código HTML: directamente en la plantilla o desde JS. Incluir este concepto en la metodología de trabajo de todos evitará que de forma totalmente arbitraria nos encontremos con casos mezclados y sin coherencia.</p>
<p>Por lo demás, usamos &#8211; al igual que muchos &#8211; las convenciones de codificación que recomienda <a href="http://www.crockford.com/" rel="external nofollow">Crockford </a>en su página:</p>
<p><a href="http://javascript.crockford.com/code.html" rel="external nofollow">http://javascript.crockford.com/code.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.inspiroh.com/best-practice-js-html-usando-js-o-no/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Todos somos gurús del Javascript</title>
		<link>http://blog.inspiroh.com/todos-somos-gurus-del-javascript/</link>
		<comments>http://blog.inspiroh.com/todos-somos-gurus-del-javascript/#comments</comments>
		<pubDate>Wed, 13 Apr 2011 06:30:30 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[Front-End]]></category>
		<category><![CDATA[cv]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>

		<guid isPermaLink="false">http://blog.inspiroh.com/?p=252</guid>
		<description><![CDATA[El otro día leí en un tweet algo como que &#8216;hay toneladas de realmente muy buen JS allí fuera, y que no son dependientes. Sin embargo hay demasiado plugin de escasa calidad de jQuery.&#8217; Pues yo respaldo este comentario de Thomas Fuchs. No porque haya criticado a jQuery en concreto, sino más bien la fuerte [...]]]></description>
			<content:encoded><![CDATA[<p>El otro día leí en un tweet algo como que &#8216;hay toneladas de realmente muy buen JS allí fuera, y que no son dependientes. Sin embargo hay demasiado plugin de escasa calidad de jQuery.&#8217;</p>
<p>Pues yo respaldo este comentario de <a href="http://twitter.com/#!/thomasfuchs">Thomas Fuchs</a>. No porque haya criticado a jQuery en concreto, sino más bien la fuerte dependencia que tienen muchos desarrollador de los frameworks, pero sobretodo de los plugins.</p>
<h3>Conocimientos: Javascript, jQuery, etc.</h3>
<p>Mi puesto en mi trabajo me ha permitido ver a lo largo de los años un buen puñado de CV&#8217;s de front-end developers (fronteros), y algo que me hace gracia es ver cómo <span style="text-decoration: line-through;">muchos </span>muchísimos escriben que tienen conocimientos sólidos en Javascript, y en especial jQuery. ¡Como si fuera más importante saber jQuery que Javascript! Pues voy a ser muy directo para este tipo de personas: Que hayas instalado y personalizado un par de plugins en un blog o una web como el lightbox y otra pijadita más, no te da derecho a indicar que ya sabes programar en Javascript, oh! Que domines jQuery no te convierte en un gurú del Javascript.</p>
<p>A veces, nos flipamos mucho en los CV&#8217;s, y eso puede acabar jugando en contra de tus intereses. A veces conviene ser más humilde y sincero, que ser un gurú.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.inspiroh.com/todos-somos-gurus-del-javascript/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Nueva versión de Prototype 1.7</title>
		<link>http://blog.inspiroh.com/nueva-version-de-prototype-1-7/</link>
		<comments>http://blog.inspiroh.com/nueva-version-de-prototype-1-7/#comments</comments>
		<pubDate>Thu, 02 Dec 2010 17:42:08 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[Front-End]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[prototype]]></category>
		<category><![CDATA[scriptaculous]]></category>

		<guid isPermaLink="false">http://blog.inspiroh.com/?p=223</guid>
		<description><![CDATA[Hace algo más de 1 semana, salió la esperadísima nueva versión estable 1.7 de Prototype. Tras un eterno periodo con la versión 1.6.x, donde incluso parecía tener síntomas de abandono del framework, finalmente no ha sido así y finalmente publicaron esta nueva versión que incluye más de 50 mejoras importantes. En un artículo anterior de [...]]]></description>
			<content:encoded><![CDATA[<p>Hace algo más de 1 semana, salió la esperadísima nueva versión <em>estable </em>1.7 de Prototype. Tras un eterno periodo con la versión 1.6.x, donde incluso parecía tener síntomas de abandono del framework, finalmente no ha sido así y finalmente publicaron esta nueva versión que incluye más de 50 mejoras importantes.</p>
<p>En un <a href="http://prototypejs.org/2010/4/5/prototype-1-7-rc1-sizzle-layout-dimensions-api-event-delegation-and-more">artículo anterior</a> de la página oficial ya hemos podido ver un avance de todo este paquete de mejoras y bugfixes que incluía las <em>release candidates</em> de esta versión 1.7 de Prototype. De dichas mejoras se destacan:</p>
<ul>
<li>Migración al motor de selectores CSS llamado <a href="http://sizzlejs.com/">Sizzle </a>(el que usa jQuery).</li>
<li>Nuevos métodos como E<em>lement#on</em>, que permite simplificar la gestión de los eventos (handlers); o <em>Element#Layout</em>, perfecto para llevar un control preciso de cada pixel de nuestros elementos del DOM.</li>
</ul>
<p>Sin duda esta release de Prototype 1.7 es una gran noticia para los que usamos esta gran librería, y parece que el Core Team están haciendo muy bien las cosas, ya que han atacado los puntos débiles que siempre había tenido esta librería como el rendimiento con el uso de selectores CSS para controlar elementos DOM respecto a otras librerías como jQuery.</p>
<p>Y lo siguiente será la llegada del <a href="http://www.scripty2.com">Scriptaculous 2</a>!! Scripty 2 + Prototype 1.7 será explosivo!</p>
<p>¿Ya has actualizado tu versión de Prototype a 1.7 en tu proyecto? ¿Has notado alguna mejora?</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.inspiroh.com/nueva-version-de-prototype-1-7/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Directorio de extensiones javascript para Prototype</title>
		<link>http://blog.inspiroh.com/directorio-de-extensiones-javascript-para-prototype/</link>
		<comments>http://blog.inspiroh.com/directorio-de-extensiones-javascript-para-prototype/#comments</comments>
		<pubDate>Thu, 25 Nov 2010 10:33:01 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[Front-End]]></category>
		<category><![CDATA[extensiones]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[prototype]]></category>

		<guid isPermaLink="false">http://blog.inspiroh.com/?p=219</guid>
		<description><![CDATA[Si te gusta la librería Prototype como yo, entonces debes tener la página Scripteka entre tus marcadores favoritos. Scripteka es un directorio de extensiones y componentes JS para Prototype bastante completo y muy útil. En ella puedes encontrar una diversidad de extensiones desarrolladas por programadores de todo el mundo. Desde diferentes extensiones para crear galerías [...]]]></description>
			<content:encoded><![CDATA[<p>Si te gusta la librería Prototype como yo, entonces debes tener la página Scripteka entre tus marcadores favoritos.</p>
<p><a href="http://www.scripteka.com">Scripteka </a>es un directorio de extensiones y componentes JS para Prototype bastante completo y muy útil. En ella puedes encontrar una diversidad de extensiones desarrolladas por programadores de todo el mundo. Desde diferentes extensiones para crear galerías de imágenes que sigue el estilo del popular <a href="http://www.huddletogether.com/projects/lightbox2/">Lightbox</a>, extensiones para optimizar la carga de los elementos de la página (<a href="http://www.bram.us/demo/projects/lazierload/">LazierLoad</a>), para validar formularios (<a href="http://www.jsvalidate.com/">JSValidate</a>) y un largo etcétera.</p>
<p><span id="more-219"></span></p>
<p>Lo mejor de Scripteka es que no tienes que andar buscando por buscadores algún componente o script, sino que está todo recopilado y centralizado, y de forma progresiva hay más extensiones dadas de alta.</p>
<p>Yo llevo bastante tiempo usando esta página como referencia para mis proyectos y sin ir más lejos, para <a title="Red social de Cine" href="http://www.cine25.com">Cine25</a> uso diferentes componentes obtenidos de Scripteka como por ejemplo:</p>
<ul>
<li><a href="http://cssrevolt.com/upload/files/prototube/">Prototube</a>: Crea una capa para poder insertar videos de Youtube de forma fácil o mostrar capturas  (thumbnails) de los videos de forma automática. Lo uso para los tráilers.</li>
<li><a href="http://www.livepipe.net">Livepipe</a>: Extensión que dota a Prototype de más funcionalidades como abrir modales, crear tabs (pestañas) de forma ágil entre otras cosas.</li>
<li>Protoload: Controlar visualmente que se está cargando la página o una parte de ella, con los típicos iconos que va rotando o cargando.</li>
</ul>
<p>En Cine25 evidentemente tengo desarrollos JS propios en el proyecto, porque muchas funcionalidades son muy específicas de la Red Social, pero no todo está hecha <em>a manija</em>. Si ya hay un módulo o componente que ha creado otro publicado por Internet  y va fenomenal, porque no aprovecharnos y ganar tiempo para implementar otras cosas!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.inspiroh.com/directorio-de-extensiones-javascript-para-prototype/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Test de velocidad de selectores para frameworks de javascript</title>
		<link>http://blog.inspiroh.com/test-de-velocidad-de-selectores-para-frameworks-de-javascript/</link>
		<comments>http://blog.inspiroh.com/test-de-velocidad-de-selectores-para-frameworks-de-javascript/#comments</comments>
		<pubDate>Mon, 25 Oct 2010 09:29:55 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[Front-End]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[prototype]]></category>
		<category><![CDATA[yui]]></category>

		<guid isPermaLink="false">http://blog.inspiroh.com/?p=182</guid>
		<description><![CDATA[&#8216;SlickSpeed Selectors Test&#8216; es una página que testea de forma completísima el rendimiento del uso de selectores css comparando entre sí los frameworks de javascript más importantes o conocidos del mercado. El test nos reporta muchísima información sobre la performance o la velocidad de cada framework. Resulta muy interesante analizar los resultados. Resultados del test [...]]]></description>
			<content:encoded><![CDATA[<p>&#8216;<a href="http://fabian-beiner.de/slickspeed-selectors-test/">SlickSpeed Selectors Test</a>&#8216; es una página que testea de forma completísima el rendimiento del uso de selectores css comparando entre sí los frameworks de javascript más importantes o conocidos del mercado. El test nos reporta muchísima información sobre la performance o la velocidad de cada framework. Resulta muy interesante analizar los resultados.</p>
<h3>Resultados del test</h3>
<p>Según los resultados que me han salido a mí, el framework que mejor y más rápido trabaja con el uso de selectores css es  la última versión de YUI 3.1.0 (39*), y le pisa los talones jQuery (40) y DOMAssistant 2.8 (41). Si lo comparo con Prototype 1.6, que es el framework que más he usado (y uso), ha obtenido un tiempo de 58, que es claramente más alto que estos primeros, y vemos que Prototype rinde menos. No obstante, hay buenas noticias al respecto ya que la última versión  de Prototype, 1.7, que ya está ultimando su salida oficial (ya van por la Release Candidate 3), viene integrado <a href="http://sizzlejs.com/">Sizzle</a>, el motor que usa jQuery para los selectores. <a href="http://prototypejs.org/2010/4/5/prototype-1-7-rc1-sizzle-layout-dimensions-api-event-delegation-and-more">Aquí </a>explican esta integración, entre otras cosas.</p>
<p><span id="more-182"></span>Comparando la nueva versión Prototype 1.7 RC2, ésta obtiene un tiempo de 42, que le recorta prácticamente toda la distancia que tenía jQuery de Prototype, igualándole pues en rendimiento del uso de selectores. Gran noticias para usuarios del Prototype, y mejor para empezar un lunes de trabajo como hoy <img src='http://blog.inspiroh.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Como dato a destacar, el que realmente va más rápido y desbanca a cualquier es hacer uso de javascript nativo (29). Aunque bueno, creo que no es comparable con los frameworks, aunque en el test lo han incluido. Sus motivos tendrán.</p>
<p>* menor es mejor</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.inspiroh.com/test-de-velocidad-de-selectores-para-frameworks-de-javascript/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Detectar el navegador con javascript</title>
		<link>http://blog.inspiroh.com/detectar-el-navegador-con-javascript/</link>
		<comments>http://blog.inspiroh.com/detectar-el-navegador-con-javascript/#comments</comments>
		<pubDate>Wed, 21 Oct 2009 10:11:21 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[Front-End]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://blog.inspiroh.com/?p=103</guid>
		<description><![CDATA[Hay varias formas de detectar en JS qué navegador está utilizando el cliente para visualizar nuestras webs. En un momento dado nos puede interesar saber el navegador que está utilizando para condicionar la funcionalidad de nuestro script. Internet Explorer Para detectar si usa Internet Explorer sin tener en cuenta la versión: var ie=(document.all)? true:false; if [...]]]></description>
			<content:encoded><![CDATA[<p>Hay varias formas de detectar en JS qué navegador está utilizando el cliente para visualizar nuestras webs. En un momento dado nos puede interesar saber el navegador que está utilizando para condicionar la funcionalidad de nuestro script.</p>
<h3>Internet Explorer</h3>
<p>Para detectar si usa Internet Explorer sin tener en cuenta la versión:</p>
<pre name="code" class="js">var ie=(document.all)? true:false;
if (ie) alert('Su navegador es Internet Explorer');</pre>
<h3>Internet Explorer 6</h3>
<p>Muchos sabemos que IE6 es un caso especial. El siguiente script nos ayudará a detectar este caso y controlarlo:</p>
<pre name="code" class="js">var is_ie6 = (window.external &amp;&amp; typeof window.XMLHttpRequest == "undefined");
if (is_ie6 ) alert('Su navegador es Internet Explorer 6');</pre>
<h3>Safari</h3>
<p>Para detectar el navegador de Apple:</p>
<pre name="code" class="js">var is_safari = navigator.userAgent.toLowerCase().indexOf('safari/') &gt; -1;
if (is_safari ) alert('Su navegador es Safari');
</pre>
<h3>Google Chrome</h3>
<p>Aunque es un navegador que cumple bastante fielmente los estándares, sigue comportándose en determinados casos de forma especial. Controlaremos este caso así:</p>
<pre name="code" class="js">var is_chrome= navigator.userAgent.toLowerCase().indexOf('chrome/') &gt; -1;
if (is_chrome) alert('Su navegador es Google Chrome');</pre>
<p>No incluyo ningún script para detectar si el navegador es Firefox ya que es un navegador que cumple al 100% los estándares, el cual nos permite tratarlo como el caso <em>por defecto</em>.</p>
<h3>El objeto Navigator</h3>
<p>En los últimos 2 casos vemos que usamos el objeto <em>navigator </em>que contiene la info que buscamos. De hecho podríamos usar este objeto <em>navigator </em>para detectar cualquier navegador, ya que <em>navigator.userAgent.toLowerCase() </em>nos indica el tipo de navegador que usa, la versión y más información que nos puede servir para controlar cada caso.</p>
<p><a href="javascript:alert(navigator.userAgent.toLowerCase())">Haz clic aquí</a> para ver un ejemplo del objeto Navigator.</p>
<p>Al hacer clic te debe de salir la siguiente información:<br />
<em><script type="text/javascript">// <![CDATA[
document.write(navigator.userAgent.toLowerCase());
// ]]&gt;</script></em></p>
<p><span id="more-103"></span></p>
<h4>Propiedades</h4>
<p>Las propiedades de Navigator que podremos consultar son:</p>
<ul>
<li><span style="color: #006300; font-family: monospace; font-size: 10pt;">appCodeName</span>. Cadena que contiene el nombre del código del cliente.</li>
<li><span style="color: #006300; font-family: monospace; font-size: 10pt;">appName</span>. Cadena que contiene el nombre del cliente.</li>
<li><span style="color: #006300; font-family: monospace; font-size: 10pt;">appVersion</span>. Cadena que contiene información sobre la versión del cliente.</li>
<li><span style="color: #006300; font-family: monospace; font-size: 10pt;">language</span>. Cadena de dos caracteres que contiene información sobre el idioma de la versión del cliente.</li>
<li><span style="color: #006300; font-family: monospace; font-size: 10pt;">mimeTypes</span>. Array que contiene todos los tipos MIME soportados por el cliente. A partir de NS 3.</li>
<li><span style="color: #006300; font-family: monospace; font-size: 10pt;">platform</span>. Cadena con la plataforma sobre la que se está ejecutando el programa cliente.</li>
<li><span style="color: #006300; font-family: monospace; font-size: 10pt;">plugins</span>. Array que contiene todos los plug-ins soportados por el cliente. A partir de NS 3.</li>
<li><span style="color: #006300; font-family: monospace; font-size: 10pt;">userAgent</span>. Cadena que contiene la cabecera completa del agente enviada en una petición HTTP. Contiene la información de las propiedades appCodeName y appVersion.</li>
</ul>
<h4>Métodos</h4>
<ul>
<li><span style="color: #006300; font-family: monospace; font-size: 10pt;">javaEnabled()</span>. Devuelve <span style="color: #006300; font-family: monospace; font-size: 10pt;">true</span> si el cliente permite la utilización de Java, en caso contrario, devuelve <span style="color: #006300; font-family: monospace; font-size: 10pt;">false</span>.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.inspiroh.com/detectar-el-navegador-con-javascript/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Scripty2: Lo más nuevo de Prototype y Scriptaculous</title>
		<link>http://blog.inspiroh.com/scripty2-lo-mas-nuevo-de-prototype-y-scriptaculous/</link>
		<comments>http://blog.inspiroh.com/scripty2-lo-mas-nuevo-de-prototype-y-scriptaculous/#comments</comments>
		<pubDate>Tue, 30 Jun 2009 14:52:15 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[Front-End]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[prototype]]></category>
		<category><![CDATA[scriptaculous]]></category>

		<guid isPermaLink="false">http://blog.inspiroh.com/?p=58</guid>
		<description><![CDATA[Cualquier Front-End Developer sabe que en la actualidad disponemos de una multitud de herramientas que nos ayuda con el día a día. Para desarrollar en Javascript existen frameworks potentes, entre los más populares están jQuery, Prototype, YUI y Mootools.  Todas estas librerías son proyectos open-source y tienen detrás una comunidad importante que los apoya y [...]]]></description>
			<content:encoded><![CDATA[<p>Cualquier Front-End Developer sabe que en la actualidad disponemos de una multitud de herramientas que nos ayuda con el día a día. Para desarrollar en Javascript existen frameworks potentes, entre los más populares están <strong>jQuery, Prototype, YUI </strong>y<strong> Mootools</strong>.  Todas estas librerías son proyectos open-source y tienen detrás una comunidad importante que los apoya y los ayuda a crecer y mejorar.</p>
<h3>Prototype vs jQuery</h3>
<p>De todos estos frameworks, sin duda hay 2 que están por encima de los demás, almenos a lo que a popularidad se refiere, y son el <a href="http://jquery.com/">jQuery </a>y el <a href="http://www.prototypejs.org">Prototype</a>. En este artículo me voy a ahorrar la explicación de los pros y contras de cada uno, o cual es el mejor de los 2, porque este debate ya se abrió hace mucho en Internet, hay mucha información <a href="http://www.google.es/search?hl=es&amp;client=firefox-a&amp;rls=org.mozilla:es-ES:official&amp;hs=Day&amp;ei=RBVKSpzdItfOjAeX4Yhj&amp;sa=X&amp;oi=spell&amp;resnum=0&amp;ct=result&amp;cd=1&amp;q=prototype+vs+jquery&amp;spell=1">allí fuera</a>.</p>
<p>Me voy a limitar a mí propia experiencia. Y yo me quedo con Prototype. Con esto estoy llendo en contracorriente porque parece que en la actualidad, jQuery le está ganando terreno a Prototype en cuanto a popularidad. Pero la gente creo que se equivoca cuando<span id="more-58"></span> argumentan que jQuery es más potente que Prototype.  Una cosa es que al tener más respaldo popular, se hayan creado  más plug-ins y más documentación para usar el framework, pero eso no implica que su core sea mejor que Prototype.</p>
<p>Llevo ya varios años usando Prototype, en conjunción con Scriptaculous, y nunca he tenido motivos para cambiarme de framework. La gente me dice, &#8220;eso es porque no has probado jQuery&#8230;&#8221; No es cierto, sí que lo he usado, y no veo una gran diferencia. Son bastante similares. Muchos me comentan que la posibilidad de concatenar varios métodos seguidos que permite jQuery es una pasada, pero no sé si saben que desde Prototype 1.6, también permite contatenar métodos.</p>
<h3>Scripty2: El próximo salto de Prototype + Scriptaculous</h3>
<p>La combinación de Prototype con Scriptaculous &#8211; una librería de efectos &#8211; se complementa a la perfección con Prototype, y este dúo te permite realizar prácticamente cualquier cosa que se te ocurra en la web frontal y jugar con los elementos DOM. La grandísima noticia que leí en el <a href="http://mir.aculo.us/2009/06/26/scripty2-for-a-more-delicious-web/">blog </a>de uno de los autores directos de Scriptaculous, Thomas Fuchs, es que está de camino una nueva versión del Scriptaculous, rebautizado como <a href="http://scripty2.com">Scripty2</a>. Todavía es una versión alpha pero hay una <a href="http://scripty2.com/demos/cards/">demo</a> online que nos da una ligera idea de las nuevas capacidades de la librería y&#8230; ¡¡madre mía!! ¡Tiene una pinta increíble!</p>
<p>Se ha mejorado en todos los aspectos la librería, separándolo en Core, UI y FX. Código más compacto pero más potente. La cosa promete, estaré observando con detalle la evolución de este proyecto. Cuando esté la versión final, me gustará escuchar la comunidad de desarrolladores web y Front-End&#8217;s, y en especial a los ultra defensores del jQuery <img src='http://blog.inspiroh.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
<p>Web oficial de Scripty2: <a href="http://scripty2.com">http://scripty2.com</a></p>
<p style="text-align: left;">Fuente: <a href="http://mir.aculo.us/2009/06/26/scripty2-for-a-more-delicious-web/">Mir.aculo.us</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.inspiroh.com/scripty2-lo-mas-nuevo-de-prototype-y-scriptaculous/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Problema de transparencia PNG en internet explorer 6 (IE6)</title>
		<link>http://blog.inspiroh.com/problema-de-transparencia-png-en-internet-explorer-6-ie6/</link>
		<comments>http://blog.inspiroh.com/problema-de-transparencia-png-en-internet-explorer-6-ie6/#comments</comments>
		<pubDate>Tue, 26 May 2009 13:55:36 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[Front-End]]></category>
		<category><![CDATA[hack]]></category>
		<category><![CDATA[ie6]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://blog.inspiroh.com/?p=46</guid>
		<description><![CDATA[Un desarrollador Front-End tarde o temprano acaba enfrentánose a uno de los múltiples problemas que tiene IE6, y en este caso se trata de las transparencias en las imágenes PNG. Lo normal es recurrir a la alternativa de las imágenes GIF, pero en ocasiones, la calidad no acaba de alcanzar la misma que un PNG. [...]]]></description>
			<content:encoded><![CDATA[<p>Un desarrollador Front-End tarde o temprano acaba enfrentánose a uno de los múltiples problemas que tiene IE6, y en este caso se trata de las <strong>transparencias en las imágenes <acronym title="Portable Network Graphics">PNG</acronym></strong>. Lo normal es recurrir a la alternativa de las imágenes GIF, pero en ocasiones, la calidad no acaba de alcanzar la misma que un PNG. Por suerte, en la actualidad existen distintas librerías que solucionan esta incompatibilidad y nos hacen la vida un poco más fáciles.</p>
<p>Cito algunas de las librerías que he utilizado personalmente y que corrigen la incompatibilidad de Internet Explorer 6 (IE6). Todos ellos son válidos y funcionan a la perfección, por tanto elegir un script es más una elección por gusto que por otra cosa:</p>
<h3>PNG fix</h3>
<p>Correcto script que habilita las transparencias de PNG en IE6.</p>
<p><a href="http://homepage.ntlworld.com/bobosola/"><em>http://homepage.ntlworld.com/bobosola/</em></a></p>
<h3>Unit PNG fix</h3>
<p>Otro script que soluciona el problema, esta vez todo en menos de 1kb!<br />
<a rel="nofollow" href="http://labs.unitinteractive.com/unitpngfix.php"><em>http://labs.unitinteractive.com/unitpngfix.php</em></a></p>
<h3>SuperSleight</h3>
<p>Esta vez un script salido de uno de los sitios web de referencia para todo Front-End o diseñador web.</p>
<p><a href="http://24ways.org/2007/supersleight-transparent-png-in-ie6"><em>http://24ways.org/2007/supersleight-transparent-png-in-ie6</em></a></p>
<h3>IE7-js</h3>
<p>Alojado en code.google.com, un script completo que además de corregir el problema de la transparencia, corrige otros problemas con IE6 y versiones anteriores.</p>
<p><a href="http://code.google.com/p/ie7-js/"><em>http://code.google.com/p/ie7-js/</em></a></p>
<p>He probado todas estas librerías y todos hacen más o menos lo mismo:</p>
<p>Le aplica un &#8220;filter&#8221;  a la imagen (<code>progid:DXImageTransform.Microsoft.AlphaImageLoader(...)</code>). Es un filtro que solo admite IE6 y lo que hace es habilitar las transparencias de la propia imagen.</p>
<p>Cada librería lo aplica a su manera, y su aplicación también varía ligeramente. En mi trabajo actual empecé usando <strong>Unit PNG fix</strong> pero he acabado usando <strong>IE7-js</strong> ya que me interesaba el resto del paquete.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.inspiroh.com/problema-de-transparencia-png-en-internet-explorer-6-ie6/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

