Haciendo experimentos
Domingo, Octubre 26, 2008Estoy haciendo algunas pruebas en el blog para insertar AdSense para búsqueda, asà que si algún visitante encuentra algún problema al entrar a OBG o ve algo raro, se agradece que lo comuniquen.
Estoy haciendo algunas pruebas en el blog para insertar AdSense para búsqueda, asà que si algún visitante encuentra algún problema al entrar a OBG o ve algo raro, se agradece que lo comuniquen.
Mi última pelea con Prototype ha estado protagonizada por los eventos. TenÃa que conseguir capturar el evento de scroll sobre un div y después de hacer algunas cosas cancelar el comportamiento por defecto del evento y evitar la propagación al scroll general de la página.
Al final descubrà la función Event.stop() de Prototype. En la documentación dice lo siguiente:
Llamándola en un evento, para la propagación y previene el comportamiento por defecto.
Su uso es simple. Veamos un ejemplo.
Aquà tenéis una página con un par de ejemplos. Podéis ver el ejemplo viendo el código fuente de la página.
alert() con el valorQuedan 12 días para la salida de Ubuntu Intrepid Ibex. Esta nueva versión tiene bastantes novedades algunas como por ejemplo el uso de pulseaudio me han parecido de lo m?s interesantes. Llevo usando las versiones previas al lanzamiento desde hace algo m?s de un mes y tengo que decir que he notado una peque?a mejora, tanto en estabilidad como en rendimiento.
Todo parece m?s integrado en el sistema y los asistentes visuales parecen bastante estables. La gesti?n de controladores propietarios de hardware ha mejorado algo. Ahora puedes ver las diferentes versiones y gracias a DKMS parece que todo funciona mucho mejor. Tengo ganas de ver la versi?n final, pero mientras tanto, si sois tan impacientes como yo, pod?is instalar Intrepid usando desde consola el comando
He actualizado el enlace del HOWTO para configurar pulseaudio en Ubuntu Hardy. Podéis ver el enlace nuevo en la entrada.
Muchas gracias a Trasto por el testeo
Desde hace unos días tengo algunos problemas con un módulo en Javascript que estoy desarrollando en el trabajo. El script hace una petición AJAX y obtiene un XML. El problema es que Internet Explorer cachea el XML cuando le apetece y eso provoca que a veces el módulo no cargue como debería. La solución es tan sencilla como añadir un nuevo argumento aleatorio a la petición, evitando así que Internet Explorer la cargue desde la caché la siguiente vez.
El siguiente ejemplo está basado en Prototype
Solución via: The Arsenalist
Desde que empecé a trabajar mi función principal es la de desarrollador web. Básicamente me peleo todo el dÃa con Prototype y con AJAX. Después de unas cuantas semana Prototype se ha convertido en parte en un gran aliado, pero también en un enemigo a batir. Conocer el framework con profundidad es esencial para trabajar con él y a veces no es fácil. Una de las cosas que mas trabajo me costó entender fue la utilidad de las funciones bind() y bindAsEventListener(). Ambas son muy potentes y muy útiles cuando se utilizan bien, pero comprender su uso puede ser difÃcil y a veces nos pueden dar quebraderos de cabeza.
Voy a intentar explicar de forma clara y simple como se usan estas dos funciones y para qué sirven. Vayamos por partes.
bind(): Es una de las estrellas en Prototype y también es una de las más trabajo suele costar entender. Imaginemos un objeto que tiene métodos para acceder a sus datos miembro. Usando bind() podemos hacer que esos objetos accedan a datos miembro de otros objetos en lugar de a los del objeto original. Veamos un ejemplo:
Como vemos, la llamada a log_bind() realiza la llamada a objeto1.bind() usando el contexto del objeto2, lo cual en terminos prácticos equivale a hacer objeto2.bind()
También podemos usar bind() para añadir argumentos a la llamada a una función. Veamos un ejemplo de esto.
Esta vez no cambiamos el contexto de la función, pero añadimos varios argumentos extra que luego se extraen usando $A(arguments), convirtiéndolos asà en un Array de Prototype.
bindAsEventListener(): Una vez hemos comprendido el uso que tiene bind() es fácil entender la dinámica de bindAsEventListener(). Su funcionamiento es el mismo que el de la función bind() pero con adaptaciones especÃficas para un contexto concreto, el de la captura de eventos.Este es el mismo ejemplo que hay en el API de Prototype pero un poco retocado:
Por partes, el objeto obj tiene una propiedad name y la función handler(evento) se encarga de manejar el evento una vez se ha disparado. Esta función extrae el nombre del elemento de la página que ha disparado el evento, los argumentos extra pasados a la función y los muestra todos por la consola de facebook. La clave de todo el ejemplo es la lÃnea:
Esta lÃnea asigna la función handler(evento) como manejadora del evento onclick del elemento y además cambia su contexto al del objeto obj y le pasa 3 números como argumento. Pero echando un segundo vistazo a la función vemos que en ningún momento le pasamos el argumento evento. Esa es precisamente la función especial de bindAsEventListener() pasar como primer argumento el objeto de la clase Event que representa al evento que se ha disparado.
Usando bindAsEventListener() siempre recibiremos el objeto Event como primer argumento, sin necesidad de pasar ese evento de forma manual.
Espero que después de este par de ejemplo quede todo un poco más claro, como siempre se aceptan preguntas, dudas y sugerencias
y para todo el código que necesitéis pegar podéis usar Pastie