Академический Документы
Профессиональный Документы
Культура Документы
INVESTIGACION
TEMAS:
GEOLOCALIZACION
WEB WORKERS
Contenido
CREACION DE CONTENIDO ARRASTRABLE (DRANG AND DROP) ........................................................ 3
Deteccin de la funcin ........................................................................................................... 3
Creacin de contenido arrastrable............................................................................................. 3
Eventos de arrastre ............................................................................................................................. 4
1. Comienzo de la operacin de arrastre.............................................................................. 5
2. dragenter, dragover y dragleave ........................................................................................ 6
3. Finalizacin de la operacin de arrastre........................................................................... 8
El objeto DataTransfer ........................................................................................................................ 9
Propiedades de arrastre ........................................................................................................ 11
Arrastre de archivos ...................................................................................................................... 12
Arrastre de archivos del escritorio al navegador ............................................................... 12
Arrastre de archivos del navegador al escritorio ............................................................... 12
Ejemplos ...................................................................................................................................... 12
GEOLOCALIZACION............................................................................................................................ 13
METODOS DEL API......................................................................................................................... 14
MTODOS DEL API..................................................................................................................... 15
WEB WORKERS .................................................................................................................................. 16
UTILIZACION .................................................................................................................................. 17
BIBLIOGRAFIA .................................................................................................................................... 18
1
Contenido de Ilustraciones
Ilustracin 1 ......................................................................................................................................... 3
Ilustracin 2 ......................................................................................................................................... 4
Ilustracin 3 ......................................................................................................................................... 4
Ilustracin 4 ......................................................................................................................................... 5
Ilustracin 5 ......................................................................................................................................... 6
Ilustracin 6 ......................................................................................................................................... 6
Ilustracin 7 ......................................................................................................................................... 7
Ilustracin 8 ......................................................................................................................................... 8
Ilustracin 9 ......................................................................................................................................... 9
Ilustracin 10 ....................................................................................................................................... 9
Ilustracin 11 ..................................................................................................................................... 10
Ilustracin 12 ..................................................................................................................................... 10
Ilustracin 13 ..................................................................................................................................... 11
Ilustracin 14 ..................................................................................................................................... 11
Ilustracin 15 ..................................................................................................................................... 12
Ilustracin 16 ..................................................................................................................................... 13
Ilustracin 17 ..................................................................................................................................... 13
Ilustracin 18 ..................................................................................................................................... 13
Ilustracin 19 ..................................................................................................................................... 14
Ilustracin 20 ..................................................................................................................................... 16
2
CREACION DE CONTENIDO ARRASTRABLE (DRANG AND DROP)
La funcin de arrastrar y soltar (Drag and Drop, DnD) tiene una gran importancia
en HTML5. En la especificacin se define un mecanismo basado en eventos, el
API de JavaScript y elementos de marcado adicionales para indicar que
prcticamente cualquier tipo de elemento de una pgina se pueda arrastrar. Es
difcil tener algo en contra de la compatibilidad nativa de un navegador con una
determinada funcin. La compatibilidad nativa del navegador con la funcin DnD
permite ofrecer aplicaciones web ms interactivas.
Deteccin de la funcin
La calidad de muchas aplicaciones que utilizan la funcin DnD se vera bastante
afectada sin esa funcin.
En aquellos casos en los que la funcin DnD no est disponible, se puede recurrir
al plan B de la biblioteca para que la aplicacin funcione adecuadamente.
Si hay que utilizar un API, se debe emplear siempre la deteccin de funciones en
lugar de rastrear el user-agent del navegador. Una de las mejores bibliotecas de
deteccin de funciones es Modernizr. Modernizr establece una propiedad
booleana para cada una de las funciones que comprueba. Por tanto, la
comprobacin de la disponibilidad de la funcin DnD es as de fcil:
Ilustracin 1
Hacer que un objeto se pueda arrastrar es muy sencillo. Solo hay que establecer
el atributo draggable=true en el elemento que se quiere mover. La funcin de
arrastre se puede habilitar prcticamente en cualquier elemento, incluidos
archivos, imgenes, enlaces u otros nodos DOM.
3
Ilustracin 2
Ilustracin 3
Eventos de arrastre
Se deben tener en cuenta distintos eventos para controlar todo el proceso de
arrastrar y soltar:
1. dragstart
2. drag
4
3. dragenter
4. dragleave
5. dragover
6. drop
7. dragend
Ilustracin 4
5
Ilustracin 5
Ilustracin 6
6
Ilustracin 7
Se deben tener en cuenta varios aspectos del cdigo utilizado en este ejemplo:
this/e.target cambia con cada tipo de evento en funcin del lugar del modelo de
eventos de DnD en el que nos encontremos.
Cuando se arrastra un elemento como un enlace, hay que impedir el
comportamiento predeterminado del navegador, que es abrir la pgina a la que
dirige el enlace. Para ello, se debe llamar a e.preventDefault() en el
evento dragover. Otro sistema que puede funcionar es utilizar return false en ese
mismo controlador. No todos los navegadores lo necesitan, pero no est de ms
aadirlo.
El controlador dragenter permite utilizar la clase "over" en lugar de dragover.
Con dragover, la clase CSS se tendra que utilizar muchas veces mientras se
siguiera activando el evento dragover al colocar el ratn sobre una columna.
7
Finalmente, ese procedimiento se traducira en una gran cantidad de trabajo
innecesario para el renderizador del navegador. Siempre es aconsejable reducir
este tipo de operaciones al mnimo.
Ilustracin 8
8
Ilustracin 9
Si has seguido detenidamente los pasos del ejemplo que se han descrito hasta
ahora, puede que observes que la columna an no se puede soltar correctamente.
Introduce el objeto DataTransfer.
El objeto DataTransfer
Ilustracin 10
9
dataTransfer tambin tiene el formato getData necesario para la extraccin de los
datos de arrastre por tipo MIME. A continuacin se indica la modificacin
necesaria para el procesamiento de la accin de arrastre de columna:
Ilustracin 11
Hemos aadido una variable global llamada dragSrcEl para facilitar el cambio de
posicin de la columna. En handleDragStart(), la propiedad innerHTML de la
columna de origen se almacena en esa variable y, posteriormente, se lee
en handleDrop() para cambiar el HTML de las columnas de origen y destino.
Ilustracin 12
10
Propiedades de arrastre
dataTransfer expone una serie de propiedades para ofrecer seales visuales al
usuario durante el proceso de arrastre. Estas propiedades tambin se pueden
utilizar para controlar la respuesta de cada elemento de destino de la operacin de
arrastre a un determinado tipo de datos.
dataTransfer.effectAllowed
Restringe el "tipo de arrastre" que puede realizar el usuario en el elemento. Se
utiliza en el modelo de procesamiento de la operacin de arrastrar y soltar para la
inicializacin de dropEffect durante los eventos dragenter y dragover. Esta
propiedad admite los siguientes
valores: none, copy, copyLink, copyMove, link, linkMove, move, all y uninitialized.
dataTransfer.dropEffect
Controla la informacin que recibe el usuario durante los
eventos dragenter y dragover. Cuando el usuario coloca el ratn sobre un
elemento de destino, el cursor del navegador indica el tipo de operacin que se va
a realizar (por ejemplo, una operacin de copia, un movimiento, etc.). La
propiedad de efecto admite los siguientes valores: none, copy, link y move.
e.dataTransfer.setDragImage(img element, x, y)
En lugar de utilizar la informacin predeterminada del navegador (la "imagen
fantasma"), puedes establecer un icono de arrastre.
Ilustracin 13
Ilustracin 14
11
Arrastre de archivos
Las API de DnD permiten arrastrar archivos del escritorio a una aplicacin web en
la ventana del navegador. Como ampliacin de este concepto,
Google Chrome permite arrastrar objetos de archivo del navegador al escritorio.
Ilustracin 15
Ejemplos
Este sera el producto final, con algn retoque adicional y un contador para cada
movimiento:
12
Ilustracin 16
GEOLOCALIZACION
Obtener la geolocalizacin.
Para obtener la geolocalizacin, se crea un nuevo objeto javascript que depende
del navegador, el objeto navigator.geolocation. Este objeto tiene a su vez una
serie de mtodos que nos permitirn manejar la localizacin.
Haremos aqu un ejemplo para ver como funciona la geolocalizacion. Lo primero
que haremos ser comprobar si el navegador soporta la geolocalizacin, para ello
pondremos el siguiente script:
Ilustracin 17
Ahora para que esto funcione debemos poner el cdigo en HTML que llame a la
funcin y devuelva el resultado:
Ilustracin 18
13
El resultado lo vemos aqu.
Ilustracin 19
Como argumento se le pasa una funcion showPosition que tenemos que crear
despus.
Veamos todo esto ampliando el cdigo anterior para obtener las coordenadas del
usuario (en azul el cdigo nuevo)
Va IP: todo dispositivo que se encuentra conectado a la red, tiene asignada una
direccin IP (Internet Protocol) pblica que acta, de forma muy simplificada,
como un cdigo postal. Evidentemente, esta no es la mejor manera de
localizacin, pero s nos da una ligera idea de dnde se encuentra.
Redes GSM: cualquier dispositivo que se conecte a una red telefona, es capaz
de obtener una posicin aproximada basndose en una triangulacin con las
antenas de telefona. Es un mtodo sensiblemente ms preciso que mediante la
direccin IP, pero mucho menos que mediante GPS.
GPS: Global Positioning System o Sistema de Posicionamiento Global. Es el
mtodo ms preciso, pudiendo concretar la posicin del usuario con un margen
de error de escasos metros.
14
if(Modernizr.geolocation) {
} else {
El API ofrece los siguientes mtodos para geolocalizar la posicin del usuario:
getCurrentPosition
watchPosition
clearWatch
navigator.geolocation.getCurrentPosition(function (position) {
15
// now do something with the position data
});
WEB WORKERS
Los Web Workers dedicados proveen un medio sencillo para que el contenido web
ejecute scripts en hilos en segundo plano. Una vez creado, un worker puede
enviar mensajes a la tarea creada mediante envio de mensajes al manejador de
eventos especificado por el creador. Sin embargo, los workers trabajan dentro
de un contexto global diferente de la ventana actual (usar el atajo window en
lugar de self con el fin de obtener el scope actual dentro de un Worker retornara,
de hecho, un error).
Crear un nuevo worker es simple. Slo tienes que llamar el constructor Worker(),
especificando la URI de un script a ejecutar en el hilo del worker (worker thread),
y, si deseas poder recibir notificaciones del worker, establece la
propiedad Worker.onmessage del worker a una funcin de manejo de eventos
apropiada.
Ilustracin 20
16
UTILIZACION
Los navegadores ejecutan las aplicaciones en un nico thread, lo que significa que
si JavaScript est ejecutando una tarea muy complicada, que se traduce en
tiempo de procesado, el rendimiento del navegador se ve afectado. Los Web
workers se introdujeron con la idea de simplificar la ejecucin de threads en el
navegador. Un worker permite crear un entorno en el que un bloque de cdigo
JavaScript puede ejecutarse de manera paralela sin afectar al thread principal del
navegador. Los Web workers utilizan un protocolo de paso de mensajes similar a
los utilizados en programacin paralela.
17
BIBLIOGRAFIA
https://www.html5rocks.com/es/tutorials/dnd/basics
https://www.w3schools.com/html/html5_draganddrop.asp
https://www.html5rocks.com/es/tutorials/dnd/basics/
http://www.arumeinformatica.es/blog/html5-api-de-geolocalizacion-geolocation-api/
https://www.arkaitzgarro.com/html5/capitulo-11.html
18