Dividir un texto mediante DOM en Javascript

Os voy a pasar un pequeño script que nos dividiría un elemento de texto HTML (TEXT_NODE) en distintas partes. Quizás os pueda resultar un script extraño, pero se puede usar poner en negrita palabras o alguna otra cosa, yo en mi caso ya le he encontrado utilidad un par de veces y ahora estoy usándolo otra vez en algo que os contaré más adelante (espero que dentro de poco tiempo).

Imaginaros que tenemos un elemento HTML que es realmente un nodo de texto (pensad en DOM, no en innerHTML), por ejemplo:

var elem = document.createTextNode('Esto es una prueba');
document.body.appendChild(elem);

Ahora queremos cambiar “es una” por “es una“. Lo que tendríamos que hacer es dividir en texto en tres partes “Esto “, “es una”, ” prueba”, crearemos tres objetos de texto, cada una con cada trozo de texto y luego un elemento STRONG en el que incluiremos el texto del medio. Por último incluimos los elementos nuevos y eliminamos el anterior.

// Obtenemos primera parte de texto
var parte = elem.nodeValue.substring(0,
elem.nodeValue.indexOf("es una"));
// Creamos elemento de texto con contenido "Esto "
var obj = document.createTextNode(parte);
// Insertamos nuevo elemento
elem.parentNode.insertBefore(obj, elem);
// Obtenemos segunda parte de texto
parte = elem.nodeValue.substring(elem.nodeValue.indexOf("es una"), elem.nodeValue.indexOf("es una")+6);
// Creamos elemento de texto con contenido "es una"
obj = document.createTextNode(parte);
// Lo añadimos a un objeto STRONG
var negrita = document.createElement("STRONG");
negrita.appendChild(obj);
// Insertamos nuevo elemento
elem.parentNode.insertBefore(negrita, elem);
// Obtenemos tercera parte de texto
parte = elem.nodeValue.substring(elem.nodeValue.indexOf("es una")+6);
// Creamos elemento de texto con contenido "es una"
obj = document.createTextNode(parte);
// Insertamos nuevo elemento
elem.parentNode.insertBefore(obj, elem);
// Eliminamos elemento anterior
elem.parentNode.removeChild(elem);

Colección de calendarios Javascript

En muchas aplicaciones web, la utilización de un campo fecha suele ser algo habitual. Es preferible que el usuario no tenga que escribir ninguna fecha, sino que esta se tenga que introducir mediante un control de tipo calendario, evitando así que ocurran ciertos errores y facilitando la labor al usuario. Tened en cuenta que hay diversos formatos DD/MM/YYYY, MM/DD/YYYY, DD-MM-YYYY, …

Espero que esta lista de calendarios realizados mediante Javascript os pueda ser de utilidad:

  • The DHTML / JavaScript Calendar: visible mediante popup o en plano, adecuado para seleccionar fecha y hora, válido para la mayoría de los navegadores, admite CSS, themes, navegación por teclado, muestra los días de los meses adyacentes, traducido a varios idiomas, días especiales resaltados de distinta manera.cal1.png
  • Calendar Popup: se muestra un popup mediante ventana o usando capas, implementado para que tenga el aspecto de Microsoft Outlook, fácil de usar.cal2.png
  • Zapatec Calendar: script comercial, muy completo, admite varios meses, válido para la mayoría de los navegadores, permite varios formatos de fecha y multiple selección de días.cal3.png
  • ScriptCalendar: versión comercial, basado en objetos, fácil de usar y de modificar, válido para la mayoría de los navegadores.cal4.png
  • CalendarXP: versión comercial, muy completo que a parte del calendario pequeño, muestra un calendario grande que admite más detalles.cal5.png
  • Tigra Calendar: el que más me ha gustado, cada campo es seleccionable, se puede adjuntar a un campo existente, meses seleccionables mediante scrolling y muchas cosas más.cal6.png
  • Epoch Calendar: básico, de aspecto atractivo y válido para ser usado en aplicaciones AJAX.cal7.png

DOM Tool: transforma HTML en código DOM

A la hora de generar nuevo código HTML mediante Javascript, nos enfrentamos a la decisión de utilizar innerHTML o DOM. El problema de usar DOM es que nos puede llevar mucho tiempo generar el código Javascript necesario para crear el HTML necesario.
Todo este proceso se puede hacer de forma mucho más sencilla mediante DOM Tool, una aplicación que nos devolverá el código Javascript necesario para pasar un HTML que introduciremos mediante un formulario.
Ya no hay excusas para no usar DOM.
DOM Tool
Vía / dzone

Tutoriales de Javascript

Está claro que tutoriales hay muchos, pero no todos son iguales, ni están enfocados para un mismo público. En este caso, yo creo que se trata de tutoriales sencillos pensados para empezar de cero, para quien no tenga ningún conocimiento de Javascript, incluso diría que para quienes el HTML es solo una forma de mostrar texto.
Empieza por lo más básico, luego nos introduce los objetos, funciones, tipos básicos, arrays, formularios y validaciones, trabajar con frames. Lo dicho, para empezar creo que es muy adecuado.
JavaScript Cake: Tutorials and Scripts
Vía / dzone

Mejora tus técnicas de programación en Javascript

Ya hemos publicado anteriormente una referencia a un artículo de new earth online y hoy vamos a hablar sobre otro de sus grandes artículos.

En este caso se trata de cómo mejorar nuestra forma de programar con Javascript. Una de las ventajas o inconvenientes de Javascript, según quien lo vea, es que se puede usar en cualquier parte de la página web y que no existe ningún método obligatorio de uso. Pero aún así, hay veces que es mejor seguir ciertos pasos para tener un código mejor y más limpio:

  • Separa el contenido de la funcionalidad, por ejemplo, si vas a añadir un evento a un objeto (onclick) añádelo mediante el evento window.onload usando un archivo js.
  • Una cosa que ya hemos comentado anteriormente es ver cómo funciona tu aplicación web si no está activado Javascript.
  • Realiza código compatible con los distintos navegadores. Desgraciadamente, a veces es necesario detectar el navegador y resolver según el navegador que sea.
  • Declara las variables usando var, si no lo haces puedes tener problemas en las funciones recursivas, por ejemplo si en una función tienes un for con una variable i y dentro de ese for vuelves a llamar a la misma función, al llegar al mismo bucle puedes tener problemas.

Javascript Best Practices

Vía / dzone

3D mediante Javascript

No sé si es por ser rebuscado o por otra cosa, pero me gusta hacer cosas con Javascript algo fuera de lo común, aunque no sirvan para mucho. Por eso, este script para crear render en 3D en tiempo real me ha parecido impresionante.
Mis conocimientos de 3D son los de una asignatura de la universidad, por eso quizás me dejo impresionar con poco, pero el modo de hacerlo, una vez que ves como es, te parece lo más sencillo del mundo.
3djavascript.png
Real-Time 3D in Javascript
Vía / Ajaxian

| | |

Laboratorio: carga de combos

Ayer nos preguntaban cómo cargar combos según lo que se seleccione en otro combo, y aunque no me quedó muy claro la duda que tenía, pues para intentar ayudarle, voy a explicar cómo hacerlo mediante tres posibilidades.

Primeramente explicaremos cómo hacerlo mediante el uso de iframes ocultos. Sí, no es nada web 2.0, pero no a todo el mundo se le da bien el desarrollo web, o no le gusta el uso de Ajax, o simplemente, como me pasa a mí, no nos dejan usar Ajax en los desarrollos del cliente (¡vete a saber por qué!).

Después lo haremos mediante Ajax (¡viva la web 2.0!), pero instanciando nosotros mismos el objeto XMLHttpRequest, para que los conceptos de Ajax no se pierdan dentro del uso de librerías, es importante conocer la base para luego usar una librería que te lo haga todo más fácil.

Y por último, ya no solo en plan web 2.0, sino en plan lo último de lo último, lo haremos usando la librería Prototype. Que la verdad sea dicha, no se trata de reinventar la rueda.

Read More “Laboratorio: carga de combos”

|

‘Bocadillos’ en tu web

Albert Lanchas nos ofrece un script que me ha gustado bastante en el que se muestran ‘bocadillos’ con imágenes dentro. El bocadillo se adapta al tamaño de la imagen y su aspecto se puede cambiar mediante CSS.
bubble.png

Es necesario tener instalado prototype para su funcionamiento, y su uso es bastante sencillo, incluir el script, la librería prototype, la css e incluir la siguiente línea para que funcione:

<a href="imagen.jpg" rel="bubble"><img src="images/bubble.png"/></a>

Yo como unica pega, intentaría hacer la sombra con una imagen png, para poder usar la transparencia que nos ofrece, aunque en IE6 no funcione.

Bubble

Vía / Fresqui

Lista de ofuscadores para Javascript

Para aquellos que necesiten ofuscar su código Javascript para que sea más difícil de entender a los usuarios, les vendrá bastante bien esta lista de aplicaciones que modificarán nuestro código:

Vía / Ajax Digest

Memory leaks en Javascript

Mirando una entrada sobre cómo evitar que se puedan producir pérdidas de memoria en Javascript, me he encontrado con una extensión para Firefox que te avisa cuando se produce este tipo de situaciones.
memoryleak.png

De paso, comentaré los tres consejos que nos da para evitar esas perdidas de memoria, que nunca vienen mal.

  • Pon la propiedad onreadystatechange a null del objeto XMLHttpRequest cuando hayas acabado de usarlo.
  • Limpia los eventos en el unload si hay posibilidad de que hagan referencia a objetos DOM.
  • No asignes nada más que valores primitivos (string, int, …) en las propiedades del DOM aunque vayas a limpiarlo después.

La verdad es que estos problemas no me queda muy claro si se dan solo en Firefox o en otro navegador, aún así, buenas costumbres a la hora de programar siempre son bienvenidas.

Leak Monitor

3 Easy Steps to Avoid JavaScript Memory Leaks

Vía / Digg