Uso Avanzado HTML 5
Uso Avanzado HTML 5
Uso Avanzado HTML 5
1
Programación HTML 5 y su API
HTML 5 avanzado
• HTML 5 nos proporciona una serie de APIS que nos permite llevar a cabo
tecnicas mas avanzadas no centrandonos solo en el diseño de paginas web.
2
Canvas y SVG
Canvas
• Un lienzo permite dibujar en el documento HTML y actualizar dinámicamente
estos dibujos, por medio de JavaScript. También puede disparar acciones a
partir de los eventos generados por el usuario
3
Canvas y SVG
Canvas
Para utilizar el canvas se debe referenciar primero el elemento canvas y adquirir su contexto.
Una vez adquirido, se puede empezar a dibujar en la superficie del canvas usando la API.
4
Canvas y SVG
Canvas
beginPath
Le dice al contexto del canvas que se va a empezar a dibujarse un camino, no tiene ningún
parámetro.
Una vez invocada la función se puede empezar a dibujar el camino añadiendo segmentos para
completarlo con las diferentes funciones.
moveTo
Sirve para definir el punto donde se comienza a dibujar el segmento.
No dibuja nada, recibe como parámetro los puntos x e y donde ha de moverse el puntero para
dibujo.
5
Canvas y SVG
Canvas
lineTo
Dibuja una línea recta desde la posición actual hasta el punto (x,y) que se indique como
parámetro. La posición actual del camino se establece indicado previamente con un moveTo(),
o donde se haya terminado el trazo anteriormente dibujado.
fill
Este método del contexto del canvas sirve para rellenar de color el área circunscrita por un
camino. Para rellenar de color un path, el path tiene que estar cerrado, por lo que, si no lo está,
automáticamente se cerrará con una línea recta hasta el primer punto del camino, es decir,
donde se comenzó a dibujar.
6
Canvas y SVG
Canvas
closePath
Sirve para cerrar un path, volviendo a su punto inicial de dibujo, no recibe ningún parámetro.
fillText
Permite dibujar texto en el canvas:
stroke
Es similar al método fill pero traza solo la silueta y no la rellena.
7
Canvas y SVG
Canvas
8
Canvas y SVG
SVG
SVG (Scalable Vector Graphics) es un formato vectorial poco conocido pero muy útil para su
uso online por su flexibilidad y por la capacidad de ofrecer gráficos con calidad.
9
XMLHttpRequest Nivel 2
Definición
• En febrero del 2008 la W3C publicó el primer borrador de la nueva versión
de este objeto, "XMLHttpRequest Level 2".
• Entre las mejoras que presenta se encuentran
• la gestión del progreso de eventos,
• peticiones entre distintos servidores
• el manejo de flujos de bytes.
10
XMLHttpRequest Nivel 2
Realizando la petición
11
Proceso de eventos
Drag & Drop
Es una característica, que permite poder arrastrar elementos de un lado a otro
en la interfaz.
En HTML5 aparecen:
• Nuevos eventos
dragstart, drag, dragenter, dragover,
dragleave, drop, dragend.
• dragleave: El elemento arrastrado ha salido del contenedor. El "target" del evento será el
elemento contenedor.
13
Proceso de eventos
Drag & Drop (Eventos)
•dragover: El elemento ha sido movido dentro del contenedor. El "target" será el contenedor.
Como el comportamiento por defecto es cancelar "drops", la función debe devolver false o
llamar a preventDefault para indicar que se puede soltar dentro de ese contenedor.
• drop: El elemento arrastrado ha sido soltado en un contenedor. El "target" del elemento será
el contenedor.
14
Proceso de eventos
Drag & Drop
• Definir el comportamiento adecuado cuando se detecta un evento relacionado con Drag &
Drop:
15
Proceso de eventos
Drag & Drop
16
Proceso de eventos
Drag & Drop
El contenedor puede recibir información de los elementos arrastrados desde otros navegadores
u otras aplicaciones.
Si utilizamos setData y getData del objeto dateTransfer expuesto en el objeto del evento (Event
Object).
17
Proceso de eventos
Drag & Drop
18
Proceso de eventos
Drag & Drop
Arrastrando archivos
• Las páginas web sin ciertos privilegios, no son capaces de recuperar o modificar datos de
este tipo.
19
Proceso de eventos
Drag & Drop
Imágenes:
20
Sockets Web
Definicion
• Los WebSockets nos ofrecen una conexión bidireccional entre el servidor y
el navegador. Esta conexión se produce en tiempo real y se mantiene
permanentemente abierta hasta que se cierre de manera explícita. Esto
significa que cuando el servidor quiere enviar datos al servidor, el mensaje
se traslada inmediatamente.
21
Sockets Web
Abrir una conexión
Para abrir una conexión WebSocket, sólo tenemos que ejecutar el constructor WebSocket, que
toma como parámetro la URL del socket a abrir. Hay que tener en cuenta que el protocolo a
utilizar es ws://:
22
Web Workers
Ejecución en segundo plano
Estos Web workers se ejecutan en un subproceso aislado. Como resultado, es necesario que el
código que ejecutan se encuentre en un archivo independiente.
Sin embargo, antes de hacer esto, lo primero que se tiene que hacer es crear un nuevo
objeto Worker en la página principal:
24
Web Workers
Ejecución en segundo plano
Las últimas versiones de los navegadores modernos son compatibles con la transferencia de
objetos JSON.
De todas maneras, siempre podemos utilizar los métodos JSON.stringify y JSON.parse para la
transferencia de objetos entre el thread principal y los Worker.
25
Web Workers
Ejecución en segundo plano
A continuación, se muestra un ejemplo sobre cómo utilizar una cadena para transferir "Hello
World" a un Worker en doWork.js. El Worker simplemente devuelve el mensaje que se le
transfiere.
Secuencia de comandos principal:
Se puede acceder a los datos del mensaje (en este caso "Hello World") a través de la
propiedad data del evento.
26
Geolocalización
Definición
En HTML5 podemos obtener la posición geográfca del usuario. Sin embargo
dado que ésto puede comprometer la privacidad del usuario, éste debe de dar
siempre su permiso para poder obtenerla.
27
Geolocalización
Obtener la geolocalización
• Para obtener la geolocalización, se crea un nuevo objeto javascript que
depende del navegador, el objeto navigator.geolocation. Este objeto tiene a
su vez una serie de métodos que nos permitirán manejar la localización.
28
Geolocalización
Obtener la geolocalización
• Ahora para que esto funcione debemos poner el código en HTML que llame
a la función y devuelva el resultado:
29
Geolocalización
Obtener las coordenadas
Nos falta encontrar las coordenadas del usuario. Para ello se utiliza el
método getCurrentPosition(showPosition), el cual lo aplicamos sobre el
elemento geolocation.
Como argumento se le pasa una funcion showPosition que tenemos que crear
después.
30
Geolocalización
Obtener las coordenadas
31
Geolocalización
Control de errores
Si por algún motivo no se pueden obtener las coordenadas, podemos indicar el
motivo mediante un control de errores.
navigator.geolocation.getCurrentPosition(showPosition,showError)
32
Geolocalización
Control de errores
33
Geolocalización
Control de errores
En la función showError mediante el argumentoerror obtenemos el posible error
que pueda producirse.
34
Geolocalización
Localización en el mapa
Para ver la localización en un mapa necesitamos tener acceso a un servicio de
mapas que utilicen la latitud y la longitud. Lo más cómodo es utilizar el servicio
de Google Maps, de acceso abierto y gratuito.
35
Geolocalización
Localización en el mapa
Una vez hallada la longitud y la latidud buscamos el mapa en Google Maps y lo
ponemos en nuestra página.
También podemos indicar el tamaño del mapa que queremos obtener (en
pixeles) en el dato &size
36
Geolocalización
Localización en el mapa
37
Geolocalización
Obtener más información.
Mediante el argumento position de la función showPosition hemos obtenido la latidud y la
longitud. Sin embargo pueden obtenerse también otros datos, siempre que éstos estén
disponibles.
En la función show position(position), podemos obtener también los siguientes datos:
• position.ooords.accuracy: Precisión en la localización del mapa.
• position.coords.altitude: Altitud sobre el nivel del mar.
• position.coords.altitudeAccuracy: Precisión en el dato de altitud sobre el nivel del mar.
• position.coords.heading: Dirección en la que nos movemos. Expresada en grados
respecto al norte.
• position.coords.speed: Velocidad a la que nos movemos.
• position.timestamp: Fecha y hora de la consulta (expresada en tiempo Unix).
38
Almacenamiento
Web Storage
• sessionStorage
permite guardar información en el lado del cliente.
es un comportamiento similar a las variables de sesión.
• localStorage
permite guardar información sobre un sitio web.
esta información puede ser compartida entre ventanas y/o pestañas distintas.
La información permanece aunque se termine la sesión.
39
Almacenamiento
Web Storage
A pesar de tener un comportamiento similar a las cookies, tiene varias ventajas adicionales:
• las cookies están limitadas a 4 KB de espacio, mientras que con SessionStorage se pueden
guardar varios MB (depende de cada navegador).
• las cookies se envían en cada petición al servidor, lo cual aumenta la sobrecarga, mientras
que la información guardada con SessionStorage no se envía automáticamente (aunque se
puede configurar si es necesario).
40
Almacenamiento
Web Storage
Los sitios pueden agregar datos al objeto sessionStorage, y se podrá acceder desde cualquier
pestaña del mismo sitio abierto en esa ventana.
41
Almacenamiento
Web Storage
42
Almacenamiento
Web Storage
• Las cookies no son aconsejables en este caso, ya que se transmiten con cada solicitud.
43
Almacenamiento
Web Storage
44