JS3D: librería 3D de javascript

Ya hace tiempo hablamos de una librería 3D en Javascript, ahora se trata de otra librería que trata elementos como puntos y trabaja sobre ellos.
js3d.png
Tan solo habrá que incluir la librería y una capa que funciona como tapiz para que se pueda empezar a usar. Se pueden realizar rotaciones, traslaciones y escalas.
JS3D
Ejemplo
Vía / dzone

|

Mostrar iconos en los enlaces mediante Javascript

Hoy he visto en varios sitios cómo poner en los enlaces un icono del tipo de archivo al que se hace referencia. Algo parecido contamos hace ya tiempo, y al igual que en el ejemplo actual, no funciona para IE6, y aunque nos pese, aún hay muchas personas que siguen usando este navegador.

Una solución es realizarlo mediante Javascript, para lo cual tan solo deberemos incluir un pequeño script en nuestras páginas. El script tiene un array con expresiones regulares que detectan determinadas href y la url del icono para incluirlo en el estilo del enlace. Además existe una función que añade al evento onload del window una función que selecciona todos los enlaces, comprueba por cada enlace si cumple alguna de las expresiones regulares y si es así modifica el estilo con el icono correspondiente.

var listaiconos = new Array();
listaiconos[listaiconos.length] = new Array(/youtube\.com\/watch\?/, "icons/icon_film.gif");
listaiconos[listaiconos.length] = new Array(/sevenload\.com\/videos\//, "icons/icon_film.gif");
...
window.onload = function() {
var enlaces = document.getElementsByTagName("A");
for (var i=0; i<enlaces.length; i++) {
var ok = false;
for (var j=0; j<listaiconos.length && !ok; j++) {
if (enlaces[i].href.match(listaiconos[j][0])) {
enlaces[i].style.paddingRight = "20px";
enlaces[i].style.backgroundImage = "url("+listaiconos[j][1]+")";
enlaces[i].style.backgroundColor = "transparent";
enlaces[i].style.backgroundRepeat = "no-repeat";
enlaces[i].style.backgroundPosition = "right center";
ok = true;
}
}
}
}

Código

Vía / Intenta

Problemas de las librerías Javascript

Ultimamente están apareciendo muchas librerías Javascript que mejoran el trabajo con Javascript, pero no todo son cosas positivas y hay gente que muestra problemas que aparecen con el uso de estas librerías:

  • Escasa documentación: ya sea online u offline, si la librería es increible, pero no hay una forma sencilla de saber cómo usarla, pues nos quedamos como estábamos.
  • Escaso soporte: estas librerías no suelen tener un sistema que ayude a los usuarios con los problemas que se encuentran.
  • Demasiado grandes: cargar una librería que ocupa mucho, para usar un par de funciones, es mucho lo que se carga y poco lo que se usa, quizás repercute negativamente en rendimiento o en ancho de banda.
  • Demasiado específicas: sobre todo al trabajo de otra gente, por lo que a nosotros nos puede venir parcialmente bien.
  • Diferentes en estructura: diferentes a la forma en que lo hacemos nosotros, en vez de usar estructuras estándares a las que podemos estar todos acostumbrados.
  • No hay guías paso a paso: para poder entender las funcionalidades de las liberías con ejemplos.
  • Escasa información sobre soporte a navegadores
  • Inconsistencia en nombres de métodos y variables: en la W3C hay amplia documentación sobre la metodología que se debería seguir para la nomenclatura de funciones y variables.

Más información

Why good JavaScript libraries fail

Dear JavaScript Library Developers…

Too many libraries, not enough librarians

Six things that suck about the Web in 2006

Vía / QuirksBlog

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

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

gotApi: colección de APIs

gotapi.pngYa hace tiempo hablamos de una web de referencias para programadores, y como cuanta más variedad de servicios parecidos tengamos, mejor que mejor. En esta ocasión os mostramos un directorio de APIs, que accediendo a las páginas originales, nos muestran las referencias que necesitamos.
Dentro de las distintas APIs encontramos referencias sobre HTML, Javascript (Prototype incluida), CSS, XML, C++, PHP, bases de datos, Java, Apache, ActionScript y mucho más que va creciendo poco a poco.
Lo que más me gusta es poder elegir el origen de referencia del API, por ejemplo para HTML puedes mirar en w3.org o en msdn.microsoft.com, aunque me hubiera gustado que se pudiera buscar también en xulplanet.com.
gotAPI.com
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”