<?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>Bezerik &#187; Internet Explorer</title>
	<atom:link href="http://bezerik.es/me/t/internet-explorer/feed/" rel="self" type="application/rss+xml" />
	<link>http://bezerik.es/me</link>
	<description>Dale que te pego a PHP, CSS, Javascript, Wordpress, Mootools...</description>
	<lastBuildDate>Sun, 07 Nov 2010 23:04:11 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>¿Qué habrá de nuevo en Mootools 1.2 Beta?, el Elemento de almacenamiento</title>
		<link>http://bezerik.es/me/what-new-in-mootools-beta-12-element-storage/</link>
		<comments>http://bezerik.es/me/what-new-in-mootools-beta-12-element-storage/#comments</comments>
		<pubDate>Mon, 28 Jan 2008 22:20:00 +0000</pubDate>
		<dc:creator>Bezerik</dc:creator>
				<category><![CDATA[Mootools]]></category>
		<category><![CDATA[Traducciones]]></category>
		<category><![CDATA[$attributes]]></category>
		<category><![CDATA[$events]]></category>
		<category><![CDATA[customProperty]]></category>
		<category><![CDATA[effectInstance]]></category>
		<category><![CDATA[Element Storage]]></category>
		<category><![CDATA[Element.Storage]]></category>
		<category><![CDATA[elementos DOM]]></category>
		<category><![CDATA[Internet Explorer]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[mootools 1.2]]></category>

		<guid isPermaLink="false">http://bezerik.es/me/2008/01/28/%c2%bfque-habra-de-nuevo-en-mootools-12-beta-el-elemento-de-almacenamiento/</guid>
		<description><![CDATA[Articulo original (en ingles): What&#8217;s New in 1.2: Element Storage Autor: Tom de http://blog.mootools.net Traducido por: Xavier Gómez Otra característica nueva que se ha incorporado en la última versión de MooTools es el Element Storage (elemento de almacenamiento). Este artículo describe el uso de esta gran novedad, así como la razón por la que se [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p><strong>Articulo original (en ingles):</strong> <a href="http://blog.mootools.net/2008/1/22/Element_Storage" target="_blank">What&#8217;s New in 1.2: Element Storage</a><br />
<strong>Autor:</strong> Tom de http://blog.mootools.net<br />
<strong>Traducido por:</strong> <a href="http://www.bezerik.es">Xavier Gómez</a></p></blockquote>
<p>Otra característica nueva que se ha incorporado en la <strong>última versión de MooTools</strong> es el <strong>Element Storage</strong> (elemento de almacenamiento). Este artículo describe el uso de esta gran novedad, así como la razón por la que se desarrolló, y cómo se puede utilizar para mantener tus aplicaciones organizadas y eficientes.</p>
<h3>¿Qué es todo esto del elemento de almacenamiento?</h3>
<p>El desarrollo de aplicaciones avanzadas de <strong>JavaScript</strong>, es a veces beneficiosa para asociar atributos o propiedades adicionales a los <strong>elementos DOM</strong>. Los quales siempre hemos sido capaces de utilizar como contenedores para el almacenamiento de todo tipo de datos, aunque esta técnica genérica tiene algunos inconvenientes. Si bien los problemas asociados a esta técnica son casi exclusivamente los problemas causados por <strong>Internet Explorer</strong>, que sin embargo, deben ser tratados.</p>
<p>Observemos el siguiente ejemplo sencillo:<br />
<span id="more-24"></span></p>
<pre class="code">var element = $('myElement');
element.effectInstance = new Fx.Tween(element, 'color');
element.customProperty = 'someProperty';

element.effectInstance;
//the Fx.Tween instance
element.customProperty;
//'someProperty'</pre>
<p>Como sabemos, a <abbr title="Internet Explorer">IE</abbr> no le gusta cuando los objetos se almacenan como atributos de Elemento, y la propiedad <strong>effectInstance</strong> se fuga si no es administrado manualmente. Otro de los problemas que hemos visto es que cuando se accede a <em>innerHTML</em> de cualquier elemento padre de nuestro elemento, IE devolverá propiedades simples (como strings, números, etc) junto con las propiedades esperadas. Esto significa que <strong>customProperty</strong> sería copiado, lo que podría plantear un problema si fuese el único atributo personalizable. Es evidente que de los dos casos, la gestión de memoria es nuestro mayor problema en este punto, pero ambas son cuestiones a considerar.</p>
<h3>¿Que es lo que va hacer Moo?</h3>
<p><strong>MooTools</strong> se utiliza para almacenar eventos  y atributos personalizados directamente en las propiedades de los elementos llamados <strong>$events</strong> y <strong>$attributes</strong>. MooTools separa manualmente las propiedades de estos elementos de la descarga de la página.</p>
<p>Echemos un vistazo a nuestro ejemplo anterior, esta vez el almacenamiento de los elementos se halla en la variable <strong>$attributes</strong></p>
<pre class="code">var element = $('myElement');
element.$attributes.effectInstance = new Fx.Tween(element, 'color');
element.$attributes.customProperty = 'someProperty';

element.$attributes.effectInstance;
//the Fx.Tween instance
element.$attributes.customProperty;
//'someProperty'</pre>
<p>En este ejemplo no se producen fugas o los efectos adversos del primera ejemplo, pero ¡no es aconsejable utilizarlo! También, a veces, se cuelga  el navegador alahora de descargar, tratando de borrar todas esas cosas. De todos modos este estilo de código no encaja con el resto de <strong>MooTools</strong>, por lo que hemos propuesto una solución mejor.</p>
<p>Cuando accedemos a un elemento, queremos ser capaces de almacenar y recuperar las propiedades de los elementos. Pero, ¿por qué atribuir estas propiedades directamente al elemento? Si se utiliza alguna forma de almacenamiento externo, no tendríamos que preocuparnos por la limpieza de los valores al descargar la página, las cosas irían más rápido, y las fugas de memoria serían una cosa del pasado.</p>
<h3>Una solución digna de MooTools</h3>
<p><strong>Element.Storage</strong> es totalmente nuevo en <strong>MooTools 1.2</strong>. Es básicamente un Hash externo que almacena todas las propiedades y eventos personalizados para cada uno de los elementos con los que interactúa.<br />
Echemos otra mirada a nuestro ejemplo anterior, esta vez utilizando el nuevo Element.Storage API:</p>
<pre class="code">var element = $('myElement');
element.store('effectInstance', new Fx.Tween(element, 'color'));
element.store('customProperty', 'someProperty');

element.retrieve('effectInstance');
//the Fx.Tween instance
element.retrieve('customProperty');
//'someProperty'</pre>
<p>Tenga en cuenta que los eventos y las acciones ya no se asignan directamente a los Elementos. Todo se almacena en el Hash exterior, y administrado por MooTools, así que como desarrollador ya no tienen nada de qué preocuparse.</p>
<h3>Cómo funciona (y para que lo estamos utilizando)</h3>
<p>Para aquellos que estén interesados, les animo a que echen un vistazo al código fuente. En el fondo, todos los elementos que interactúan o se utilizan cuando se trabaja con MooTools reciben un número de identificación único (ID). Esta identificación que, en realidad, esta adjunta al elemento, luego sirve como clave (key) en el Element.Storage Hash.<br />
Queremos que MooTools sea lo más rápido posible, por lo que hacemos un montón de <a title="Wikipedia Ingles" href="http://en.wikipedia.org/wiki/Memoization" target="_blank">memoization</a>. En el fondo, la idea es no crear algo hasta la primera vez que sea necesario, pero luego cachearlo para su inmediato uso posterior. Muchos de ustedes ya han probado las versiones beta  de <strong>MooTools 1.2</strong> y se han divierto con el nuevo Elemento <strong>shortcuts</strong>. Todos estos <strong>shortcuts</strong> utilizan la nueva API de almacenamiento para hacer  las cosas tan fluidas y eficientes como nos es posible.</p>
<h3>Ejemplos avanzados</h3>
<p><strong>Elemento:retrieve</strong> actualmente acepta un segundo parámetro opcional que actuará como el valor por defecto para almacenar otro valor si no existe previamente. A continuación, recuperamos el valor tal y como se esperaba.</p>
<pre class="code">$('myElement').retrieve('defaultValue', 'Some Default Value');
//stores and returns 'Some Default Value' if the key doesn't previously exist</pre>
<p>Además, muchos usuarios han preguntado por el <strong>namespacing</strong> del Elemento de almacenamiento. Hemos respondido diciéndoles que esto actualmente ya permite eso desde el momento en que se puede almacenar objetos y <strong>Hashes</strong>. Veámos el siguiente ejemplo.</p>
<pre class="code">var element = $('myElement');
var data = element.retrieve('galleryData', {});
data.id = 16;
data.source = '/images/16.jpg';
data.title = 'Some Title';
//later
$('myElement').retrieve('galleryData');
//{ id: 16, source: '/images/16.jpg', title: 'Some Title' }
$('myElement').retrieve('galleryData').id;
//16</pre>
<p>Las posibilidades son infinitas. Nos encantaría conocer que a todo el mundo le gusta esta nueva función, así como la manera en que la usan en sus aplicaciones. ¡En mi próximo artículo hablaré un poco más sobre cómo <strong>MooTools</strong> utiliza el elemento de almacenamiento <strong>Element Storage</strong> para todos los impresionantes nuevos elementos <strong>shortcuts</strong> como por ejemplo <strong>Element:highlight</strong>!</p>
<p>&#8211; Ciao for now!</p>
<ul class="related_post"><li><a href="http://bezerik.es/me/mootools-creara-un-directorio-de-plugins/" title="Mootools creara un directorio de Plugins">Mootools creara un directorio de Plugins</a></li><li><a href="http://bezerik.es/me/mootools-12-ya-ha-sido-publicado/" title="¡MooTools 1.2 ya ha sido publicado!">¡MooTools 1.2 ya ha sido publicado!</a></li><li><a href="http://bezerik.es/me/jtools-el-nuevo-nombre-para-mootools/" title="jTools, el nuevo nombre para MooTools">jTools, el nuevo nombre para MooTools</a></li><li><a href="http://bezerik.es/me/ya-ha-sido-publicado-moord-131/" title="Ya ha sido publicado moo.rd 1.3.1">Ya ha sido publicado moo.rd 1.3.1</a></li><li><a href="http://bezerik.es/me/moord-13-mootools-amor/" title="Moo.rd + Mootools = Amor">Moo.rd + Mootools = Amor</a></li><li><a href="http://bezerik.es/me/personaliza-checkboxes-radio-buttons-con-mooforms/" title="Personaliza tus checkboxes y radio buttons con MooForms">Personaliza tus checkboxes y radio buttons con MooForms</a></li><li><a href="http://bezerik.es/me/cambios-y-novedades-en-moord/" title="Cambios y novedades en Moo.rd">Cambios y novedades en Moo.rd</a></li><li><a href="http://bezerik.es/me/moord-131-la-primera-demo-oficial/" title="Moo.rd 1.3.1: La primera demo oficial ">Moo.rd 1.3.1: La primera demo oficial </a></li><li><a href="http://bezerik.es/me/como-utilizar-las-clases-de-mootools/" title="Como utilizar las clases de Mootools">Como utilizar las clases de Mootools</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://bezerik.es/me/what-new-in-mootools-beta-12-element-storage/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

