Archivo de la categoría ‘JavaScript’

Timeline – Parámetro Position

Publicado por Iván Gajate el 6 de octubre de 2014 en Desarrollo Web, JavaScript | Los comentarios están cerrados.

Sigo siendo super fan del TweenMax como herramienta para animar, y cuando utilizas a fondo el TimelineMax se pueden hacer animaciones que nunca pensaste hacer en HTML 🙂
Hay un parámetro extra al final del todo que nos da mucha flexibilidad. Position:

.to( target, duration, vars, position )

Lo que hace es «sacar» esa animación de su flujo normal en el timeline y fuerza a que empiece en otro momento que nosotros queramos.
Podemos decirle que empiece en un tiempo concreto desde que empezó el timeline, un segundo, dos segundos… o relativo a lo que sería su tiempo normal de comienzo, «+=1» por ejemplo empieza un segundo después de lo que le correspondería.
También se puede crear un label como haríamos en Flash para referirnos a ese momento con mayor facilidad.

Algo así:

 

tl.to(element, 1, {x:200})
  //1 second after end of timeline (gap)
  .to(element, 1, {y:200}, "+=1")
  //0.5 seconds before end of timeline (overlap)
  .to(element, 1, {rotation:360}, "-=0.5")
  //at exactly 6 seconds from the beginning of the timeline
  .to(element, 1, {scale:4}, 6);

Se explica muy bien en el propio vídeo de Greensock.

Hay ejemplos muy chulos como este.

JS – Hacer una Transición de un Valor Numérico

Publicado por Iván Gajate el 17 de septiembre de 2014 en JavaScript | Los comentarios están cerrados.

Hay una forma muy sencilla de hacer una interpolación entre dos valores numéricos. Un tween de un valor, como si lo hiciésemos de una posición o de la anchura de un objeto pero de un valor numérico.
Yo esto lo suelo usar para cambiar el volumen de un sonido.
Tan solo hay que envolver el valor que queramos interpolar en un objeto y hacer un tween con TweenMax como siempre:

var obj = {value:0};
TweenMax.to(obj, 1, {value:3, ease:Linear.easeNone, onUpdate:onUpdate});
function onUpdate() {
	console.log(obj.value);
}

En este ejemplo hago un tween desde 0 hasta 3 en 1 segundo.
Devolvería esto:

0
0.126
0.33
0.396
0.42000000000000004
0.471
0.522
0.573
0.6180000000000001
0.672
0.7230000000000001
0.771
0.8219999999999998
0.8699999999999999
0.9239999999999999
0.9719999999999999
1.023
1.071
1.1219999999999999
1.17
1.224
1.272
1.323
1.371
1.4249999999999998
1.4729999999999999
1.524
1.572
1.6230000000000002
1.674
1.722
1.7759999999999998
1.8239999999999998
1.875
1.9260000000000002
2.022
2.073
2.127
2.175
2.226
2.277
2.325
2.376
2.4269999999999996
2.4779999999999998
2.526
2.577
2.628
2.676
2.7270000000000003
2.775
2.8289999999999997
2.877
2.928
2.979

JS – Detectar si estoy en un iFrame

Publicado por Iván Gajate el 12 de septiembre de 2014 en JavaScript | Los comentarios están cerrados.

A veces viene bien saber si nuestra página está siendo cargado dentro de un iFrame. Es así de simple 😀

var insideIframe = window.top !== window.self;
if(insideIframe){
     // lo que sea...
}

JS – Animar elementos con WOW

Publicado por Iván Gajate el 4 de julio de 2014 en Desarrollo Web, JavaScript | Los comentarios están cerrados.

WOW es una librería JavaScript que sirve para hacer que ciertas partes de nuestro site vayan apareciendo según hacemos scroll. Es un efecto muy simple pero da un aspecto mucho mas dinámico a nuestro site con muy poco esfuerzo. Basta con poner una clase al elemento que queramos desvelar 🙂

https://github.com/matthieua/WOW

Un ejemplo con las animaciones que puede hacer http://mynameismatthieu.com/WOW/

HTML – Botones de Twitter

Publicado por Iván Gajate el 14 de mayo de 2014 en Desarrollo Web, JavaScript | Los comentarios están cerrados.

Para insertar un botón de compartir en Twitter aquí están todos los ejemplos posibles

https://dev.twitter.com/docs/tweet-button

No hace falta que tenga el aspecto de botón de Twitter, basta con que pongamos un enalce a

Ejemplo de Twitter

<a href="https://twitter.com/intent/tweet?text=Nuestro texto con almohadillas y todo %23yporqueno" target="_blank">Tuitea tu código</a>

Hay que convertir las almohadillas (#) a %23

JS – Internet Explorer Shim

Publicado por Iván Gajate el 26 de abril de 2014 en JavaScript | Los comentarios están cerrados.

Si nuestro código falla inexplicablemente en Internet Explorer 8 seguramente sea porque estamos llamando a alguna función que no existía por aquel entonces, como trim, indexOf, forEach
Para solucionarlo podemos incluir este js en nuestra página y todo volverá a funcionar como debería 🙂

https://github.com/es-shims/es5-shim/blob/master/es5-shim.js

JS – Convertir una fecha en un objeto Date

Publicado por Iván Gajate el 22 de abril de 2014 en JavaScript | Los comentarios están cerrados.

No todos los navegadores manejan igual las cadenas de fecha. Para evitar fallos, esto funciona en todos:)

 

var arr = "2010-03-15 10:30:00".split(/[- :]/);
var date = new Date(arr[0], arr[1]-1, arr[2], arr[3], arr[4], arr[5]);
 
console.log(date);  // Mon Mar 15 2010 10:30:00 GMT+0000 (GMT Standard Time)

Visto en Javascript date parsing on Iphone

JS – Detectar Capacidades de un Dispositivo

Publicado por Iván Gajate el 9 de abril de 2014 en JavaScript | Los comentarios están cerrados.

Estas son las detecciones que uso yo para saber si un dispositivo es un móvil, si es táctil y si tiene detección del giro. No son perfectas, pero en la mayoría de los casos me funcionan bien.

 

// Detecto si es un iPad o dispositivo con deteccion de movimiento
var isTouchable = ('ontouchstart' in window) || ('onmsgesturechange' in window);
var isMobile = /android|webos|iphone|ipad|ipod|blackberry|iemobile/i.test(navigator.userAgent.toLowerCase());
var isOrientationDevice = (window.DeviceOrientationEvent != null) &amp;&amp; (typeof(window.DeviceOrientationEvent) === 'object');

Weinre – Depurar en remoto

Publicado por Iván Gajate el 27 de febrero de 2014 en Desarrollo Web, JavaScript | Los comentarios están cerrados.

Una de las cosas mas complicadas del desarrollo para dispositivos móviles es depurar nuestras aplicaciones. En escritorio es fácil porque tenemos muchas herramientas para ver el código y ver qué está pasando por detrás, pero en móvil solía ser muy complicado.

Una forma fantástica de hacerlo es con Weinre. Funciona sobre NodeJS y nos permite ver en nuestro ordenador, con un inspector igualito que el de Chrome lo que estamos visualizando en nuestro móvil.
Para usarlo tenemos que hacer 3 cosas:

  1. Instalar Weinre y ponerlo a funcionar.
  2. Incluir un archivo js en nuestra página.
  3. Abrir el panel de Weinre para inspeccionar nuestro dispositivo móvil.

 

Para instalarlo, una vez instalado NodeJS, solo tenemos que escribir esto en el terminal:

sudo npm -g install weinre

y se instalará sin más:

A continuación, para arrancarlo simplemente escribimos esto en el terminal, indicándole nuestra ip y el puerto por el que queremos acceder:

weinre --httpPort 8080 --boundHost 192.168.1.39

 

Esto hará que podamos acceder a él a través de http://192.168.1.39:8080, aunque si queremos podemos especificar la ip y otro puerto:

 

A continuación tenemos que incluir este archivo js en nuestro HTML (hay que acordarse luego de quitarlo, cuando terminemos nuestro proyecto)

<script type="text/javascript" src="http://192.168.1.39:8080/target/target-script-min.js"></script>

Ahora tendremos que abrir esta página desde nuestro móvil a través de nuestro localhost, con Mamp o el que utilicemos.

http://192.168.1.39/miproyecto/mipagina.html

 

Ya tenemos todo listo. Ahora para acceder al inspector entramos por ese puerto en un navegador

http://192.168.1.39:8080/

y veremos la página de acceso:

 

Si todo ha ido bien, veremos al menos un enlace en verde. Para depurar nuestro dispositivo hacemos click en el primer enlace. Ojo que hay que tener el móvil con el navegador activo y la página que queremos depurar visible.

La pestaña Elements me parece la mas interesante, pues nos permite ver y modificar el html y las css de nuestra página viendo el resultado directamente en nuestro móvil 🙂
Y la Consola, por supuesto, donde podemos hacer de todo!

 

NodeJS

Publicado por Iván Gajate el 26 de febrero de 2014 en Desarrollo Web, JavaScript | 1 comentario »

NodeJS nos sirve para programar en JavaScript del lado del servidor. Es muy fácil de instalar y nos permitirá trabajar con muchos de los proyectos actuales mas interesantes, como por ejemplo Sockets, Less o RequireJS.

Para instalarlo simplemente vamos a la página de NodeJS y descargamos y ejecutamos el instaldor.

Ya podemos ejecutar archivos de javascript. Para ejecutar nuestros programas, abrimos el terminal (Macintosh HD/Applications/Utilities/Terminal.app) y llamamos a Node pasándole la ruta de nuestro js. Podemos arrastrar el archivo directamente sobre el terminal para que nos escriba la ruta del archivo. Utilizamos la palabra sudo para ejecutarlo como super usuario y evitar problemas de permisos. Nos pedirá nuestra contraseña de usuario, y aunque no se vea mientras la escribimos, pulsamos Enter y la reconocerá.

sudo node /Users/ivan/node/nums.js

Ya podemos escribir nuestro programa y veremos los logs en la ventana del terminal. Un ejemplo simple y veremos «7» en el terminal:

// nums.js
var num1 = 5;
var num2 = 2;

console.log(num1 + num2);

Si queremos instalar algún paquete como socket.io por ejemplo para trabajar con sockets, podremos instalarlos con el package manager (npm):

sudo npm install socket.io

Veremos el progreso de descarga y lo instalará automáticamente.
En esa misma página encontraremos un ejemplo sencillo de cómo crear un servidor de sockets y hacer un chat con unas pocas líneas 🙂

Cada vez que hagamos un cambio en el servidor tendremos que cerrarlo y volver a arrancarlo. Para cerrar nuestro servidor teclear Ctrl+C dos veces.

Descargar ejemplo de chat.