CSSLab » AJAX http://www.csslab.cl Un laboratorio de ideas para la web en español Thu, 12 Jan 2012 02:32:35 +0000 en hourly 1 http://wordpress.org/?v= Iniciándose en el DOM (actualizado) http://www.csslab.cl/2008/04/07/iniciandose-en-el-dom/ http://www.csslab.cl/2008/04/07/iniciandose-en-el-dom/#comments Mon, 07 Apr 2008 16:26:33 +0000 Jorge Epuñan http://www.csslab.cl/2008/04/07/iniciandose-en-el-dom/ Este artículo fue actualizado.

Document Object Model, o DOM, o Modelo en Objetos para representar Documentos es una modelo en que los scripts pueden acceder y modificar dinámicamente el contenido, la estructura o los estilos de documentos HTML. A través del manejo del DOM se permiten las actualizaciones en tiempo real de contenidos, envío de formularios asincrónicamente, etc. O sea, es la base del funcionamiento de los rollovers, del onclick, de AJAX.. Se utilizó por primera vez en Netscape Navigator 2.0.

El entendimiento del DOM es la base para entender la programación web.

Aunque el desarrollo del DOM es responsabilidad de la W3C, como todo lo que sale de ahí, ha habido discrepancias en su implementación. Aunque todos los navegadores usan Javascript como lenguaje de programación, los objetos no se comportan de la misma manera, lo que se traducía en diferentes maneras en que había que programar para IE, Netscape, Firefox… (ya no nos bastaba tener que hacer que los estilos funcionaran parecidos entre navegadores… ¡ahora con el DOM tambiém!). Eso lo puedes notar en sitios donde el onclick sólo funciona en IE6 y no en Safari, por ejemplo. Gran ayuda son los frameworks de Javascript, que ponen todos sus esfuerzos en lograr que sus fantásticas funcionalidades sean crossbrowser.

Manipulando Objetos

Objetos en un sitio web tienen propiedades, así como en la vida real una piedra tiene peso, color y textura:

Para el siguiente modelo:

<div id="texto">lorem Ipsum</div>

El objeto puede ser <div> o su identificador, el id="texto". La propiedad puede ser el color del texto, o su tamaño. Juguemos con su color. El valor, será el valor del color en hexacromía:

Objeto.propiedad = valor
Texto.color = #f00;

Usando jQuery:

$("#texto").css(color: "#f00");

Usando Mootools:

&("#texto").setStyle(‘color’, ‘#f00′);

Manipulando Eventos

Un evento se define cuando alguna situación cambia en el comportamiento del sitio web: cuando se presiona alguna tecla, el click del mouse, la posición del cursor; o sea, la interacción del usuario con el sitio web. Estos eventos también son objetos (que responden a eventos) y se pueden manejar mediante Javascript.

Para el mismo modelo anterior, mediante un MouseOver:

Usando jQuery:

$("#texto").mouseover(function() {
     alert("Mouse sobre el div#texto");
});

Usando Mootools:

$("#texto").addEvent(‘mouseover’, function() {
     alert("Mouse sobre el div#texto");
});

onLoad v/s onDomReady

Siento que me faltó un importante tópico que tratar en este breve paso por el DOM. Se trata del evento que gatilla las acciones de la página, más precisamente el anticuado onLoad, v/s el moderno onDomReady.

El problema de onLoad es que espera que toooda la página, y toooooodos sus elementos estén cargados para ejecutarse. Su nombre lo dice, cuandoCargue (onLoad). Imagínate: primero cargas el HTML y sus elementos, luego los scripts, las imágenes… puede demorarse un montón. Cuando recién termina todo eso ejecuta algún evento determinado por onLoad.

Aquí es cuando viene al rescate onDomReady. Este evento creado por los frameworks (Mootools y YUI lo tienen implementado) ejecuta sus comandos justo cuando los elementos HTML de la página están renderizados, o sea, justo lo necesario para comenzar a manipularlos como objetos. Genial, mientras aún siguen cargando el resto de las imágenes, swf’s, etc.

Links:

]]>
http://www.csslab.cl/2008/04/07/iniciandose-en-el-dom/feed/ 8
Ajax con Mootools http://www.csslab.cl/2008/02/25/ajax-con-mootools/ http://www.csslab.cl/2008/02/25/ajax-con-mootools/#comments Mon, 25 Feb 2008 21:11:51 +0000 Jorge Epuñan http://www.csslab.cl/2008/02/25/ajax-con-mootools/ Mootools nos permite integrar fácilmente Ajax según nuestras necesidades, ya sea mediante el envio de formularios o, como lo veremos ahora, el rescate de información desde una fuente externa a nuestra página, sin tener que volver a cargar la página. Primero, construiremos un HTML donde estará un lugar delimitado en que se cargará la info desde otro HTML creado también por nosotros (un lorem ipsum cualquiera). Y claro, un botón que gatillará la acción mediante Ajax.

<a href="" id="comienza">Rescata la info</a>
<div id="traelo_aqui">
     <p>Trae aqu&iacute; la info</p>
</div>

Básicamente es un botón que al ser presionado cargará la info desde una página determinada por nosotros mediante JS hasta el div que definimos. Ahora, mediante Mootools crearemos el evento:

$(‘boton’).addEvent(‘click’, function(e) {
     e = new Event(e).stop();
     var url = "http://www.csslab.cl/ejemplos/ajax_mootools/lipsum.html";
     $(‘traelo_aqui’).empty().addClass(‘cargando’);
          new Ajax(url, {
          method: ‘get’,
          update: $(‘traelo_aqui’),
          onComplete: function() {
               $(‘traelo_aqui’).removeClass(‘cargando’)
          }
     }).request();
});

Al elemento con id="boton" (o sea, <a id="boton">) le agregamos un evento de ‘click’ (addEvent). De ahí, comenzamos una función que a través del método ‘get’, trae lo que esté en la variable url (var url) y refresca lo que esté adentro del id="traelo_aqui" (o sea <div id="traelo_aqui">). Además, agregaremos una class="cargando" al contenedor mientras se está rescatando la información por si se demora mucho (addClass(‘cargando’);) y cuando termine todo, sacaremos esa class (removeClass). Básicamente esa es la explicación.

Ver ejemplo

]]>
http://www.csslab.cl/2008/02/25/ajax-con-mootools/feed/ 13
Nuevo sitio, nuevos métodos http://www.csslab.cl/2007/04/05/nuevo-sitio-nuevos-metodos/ http://www.csslab.cl/2007/04/05/nuevo-sitio-nuevos-metodos/#comments Thu, 05 Apr 2007 20:26:19 +0000 Jorge Epuñan http://www.csslab.cl/2007/04/05/nuevo-sitio-nuevos-metodos/ En estos días he estado diseñando y contruyendo el nuevo sitio web para mi proyecto-empresa Be Studios. Es la tercera versión ya, y esta vez no utilizaré ni una pizca de Flash; me aburrió. Así que está siendo construído enteramente sobre XHTML (trataré de que sea estricto y que valide en todo) y he jugado bastante con diferentes efectos javascript. Durante su construcción, me he topado con varios inconvenientes, los que a través de unas técnicas interesantes he podido sobrepasar. Algunas de ellas mostraré aquí en una serie de artículos, porque claro más de alguno puede tener la misma inquietud.

Precisamente me gustaría comentar sobre las librerías javascript con que he estado jugando. Pasé por las más importantes, y perdí unas buenas horas tratando de que funcionen como quiero. La que más me impresionó fue Mootools, nunca había trabajado con él y es bastante interesante (no dejen de visitar su sección de downloads, lo que demuestra su potencial). Luego, pasé a Jquery con el que había tenido unos roces antes, y sabía que tenía algunos efectos que necesitaba (pero por alguna razón que desconozco hacía que se cayera Safari). Conocí a Interface, una librería sólo de efectos similar a Script.aculo.us para Prototype. Precisamente con ésta me quedé al final, la que más de trabajado y la que más me gusta, por la fácil implementación y configuración de efectos que posee. Los invito a probarr un poco de todas y hacerse de su propia opinión.

]]>
http://www.csslab.cl/2007/04/05/nuevo-sitio-nuevos-metodos/feed/ 4
Agregando movimiento vía JavaScript http://www.csslab.cl/2007/02/13/agregando-movimiento-via-javascript/ http://www.csslab.cl/2007/02/13/agregando-movimiento-via-javascript/#comments Tue, 13 Feb 2007 21:22:58 +0000 Jorge Epuñan http://www.csslab.cl/2007/02/13/agregando-movimiento-via-javascript/ Más de alguna vez me han preguntado cómo funciona el menu superior que comanda este sitio. Ese movimiento de la etiqueta que de tan fluído parece ser Flash. Bueno, para eso se utiliza una librería JavaScript gratuita llamada script.aculo.us, la que a través de un simple comando y fácil configuración permite ese y otros muchos interesantes efectos. Existen algunas otras librerías, también gratis que hacen lo mismo. Tal es el caso de mootools, jquery o simpleJs. Es desición de cada uno cuál utilizar.

Bien, para el ejemplo específico del efecto del menú de este sitio, se utilizó Effect.toggle(), el que permite con un sólo onclick() (en un <a>, <span>, etc) mostrar y esconder el div con el id que necesitamos. En el fondo se trata de eso, tenemos un div, le damos un id específico y único, el que a través del onclick le decimos que muestre ese div si está escondido, o que lo esconda si está visible. Para que el div esté escondido desde un inicio, le damos un display: none; en el mismo HTML o en una hoja de estilos externa, como prefieras. Como la mayoría de las veces, muestro un ejemplo visual y código utilizado explicado. Primero, el código HTML:

<a onclick="new Effect.toggle($(‘cajatexto’),’blind’)">Mostrar y Esconder Texto</a>
<div id="cajatexto" style="display: none;">
<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Mauris eget ante. Integer sollicitudin urna eget est. Phasellus pharetra rutrum erat. Phasellus non augue et sapien nonummy……………..</p>
</div>

Fijarse que al onclick se le agregó el id cajatexto, al igual que el div que queremos que se vea el efecto aplicado.

Ver ejemplo

Debemos agregar 2 elementos JavaScript a la página que queremos que ocurra el efecto: prototype.js y scriptaculous.js (en ese mismo orden).

<script src="include/prototype.js" type="text/javascript"></script>
<script src="include/scriptaculous.js" type="text/javascript"></script>

Como dije, script.aculo.us ofrece muchas más funcionalidades, además de efectos. Chequeen su sitio para más información.

]]>
http://www.csslab.cl/2007/02/13/agregando-movimiento-via-javascript/feed/ 13
Lightbox + SWF http://www.csslab.cl/2006/09/01/lightbox-swf/ http://www.csslab.cl/2006/09/01/lightbox-swf/#comments Fri, 01 Sep 2006 21:04:16 +0000 Jorge Epuñan http://www.csslab.cl/?p=70 Nadie niega el boom que ha tenido Lightbox y todos sus sucedáneos en la manera de desplegar imágenes inline, sin tener que utilizar popup. Ciertamente una de las mejores aplicaciones AJAX existentes. El problema que surge, es cuando lo utilizamos en conjunto con un SWF: esta película suele ponerse adelante del Lightbox, y no deja visualizar bien la imagen o el contenido que estamos desplegando (en el caso del Thickbox). Bueno, para solucionar esto, se deben hacer 2 cambios fundamentales: uno en el OBJECT que llama el SWF y uno en el CSS del contenedor de este SWF; en el caso de no tenerlo, es preferible crear un DIV que sólo contenga nuestra querida película Flash. Vamos por partes:

En el OBJECT debemos aplicar un parámetro y un valor para la película Flash: wmode="opaque". Es conocida por muchos el parámetro wmode="transparent", pues ésta nos permite que las zonas que no tienen fondo en la película Flash se transparente, dejando ver el fondo del HTML que lo contiene (sea éste color plano, o una gradiente, o una foto, etc), similar a una película PNG Transparente (precisamente trabajando con el canal de transparencia, el canal alpha). Con opaque, la película Flash se esconderá detrás de cualquier elemento, sea éste HTML o controlado por Javascript. Por lo tanto, el HTML que llama el SWF sería:

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0" width="300" height="200">
<param name="movie" value="csslab.swf" />
<param name="quality" value="high" />
<param name="wmode" value="opaque" />
<embed src="csslab.swf" width="300" height="200" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" wmode="opaque"></embed>
</object>

Como mencioné, se creará un DIV que contiene nuestra película Flash. Este DIV contendrá, en este caso, un z-index=-999; Para quienes no conocen, la propiedad z-index determina el orden, o relevancia en que un elemento designado tendrá sobre otro, por ejemplo, cuando una imagen pasa por debajo de un texto (el <img> tiene un z-index inferior al <p> del texto), o si queremos que la imagen pase por encima del texto (el z-index del <img> será superior al z-index del <p> del texto). ¿Se entiende? Ojalá que sí, aquí pueden ver un ejemplo gráfico de ello. bueno, lo que haremos entonces es reforzar el wmode="opaque" que debería pasar ya detrás del Lightbox, con el z-index (exagerado) de -999, y el CSS del Lightbox ya viene con un z-index de 100; El CSS del DIV contenedor del SWF sería:

#flash {
z-index: -999;
}

Ver ejemplo con Lightbox

]]>
http://www.csslab.cl/2006/09/01/lightbox-swf/feed/ 129
Eye OS: el CMS que todos pedíamos http://www.csslab.cl/2005/11/28/eye-os-el-cms-que-todos-queriamos/ http://www.csslab.cl/2005/11/28/eye-os-el-cms-que-todos-queriamos/#comments Mon, 28 Nov 2005 21:06:00 +0000 Jorge Epuñan http://www.csslab.cl/?p=23 Todo el poder de AJAX (suena a comercial de jabón de lavar ropa), más la maleabilidad del CSS y la robustez de PHP, se concreta en EyeOS, un CMS que más se parece a un sistema operativo. Están en su versión 0.8.5 y tiene sopote para IE y Mozilla. Trae 10 aplicaciones (gestor de archivos, agenda, calendario, editor de texto, calculadora, mensajería interna, navegador, panel común, personalización e información) listas para utilizarse, y es Open Source! Qué mejor…. Los invito a probarlo y sacarle provecho.

Link: EyeOS: web based operating system.

]]>
http://www.csslab.cl/2005/11/28/eye-os-el-cms-que-todos-queriamos/feed/ 1
1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31|32|33|34|35|36|37|38|39|40|41|42|43|44|45|46|47|48|49|50|51|52|53|54|55|56|57|58|59|60|61|62|63|64|65|66|67|68|69|70|71|72|73|74|75|76|77|78|79|80|81|82|83|84|85|86|87|88|89|90|91|92|93|94|95|96|97|98|99|100|101|102|103|104|105|106|107|108|109|110|111|112|113|114|115|116|117|118|119|120|121|122|123|124|125|126|127|128|129|130|131|132|133|134|135|136|137|138|139|140|141|142|143|144|145|146|147|148|149|150|151|152|153|154|155|156|157|158|159|160|161|162|163|164|165|166|167|168|169|170|171|172|173|174|175|176|177|178|179|180|181|182|183|184|185|186|187|188|189|190|191|192|193|194|195|196|197|198|199|200|201|202|203|204|205|206|207|208|209|210|211|212|213|214|215|216|217|218|219|220|221| viagrea onling viagra tablets name and cost levitra and dapoxetine youtube/viagra cialis extra generic viagra accepting american express buy generic viagra online with no prescription with mastercard generic levitra 20 mg levitra pro buy viagra online in ireland is it illegal to order viagra from outside the united states cheapest generic cialis buy cheap levitra overnight delivery cialis wears off airport security generic viagra generic finasteride viagra for sale using paypal ukAccutane Online Doxycycline online Buy Cheap Lexapro Online No Prescription Prednisone Online Buy Accutane No Prescription