10 Apis HTML
10 Apis HTML
JavaScript
Netscape 2 (1995) incorpora Javascript (Brendan Eich)
Manipular pginas Web interactivamente
No viene de Java
Originalmente, LiveScript (cambio de nombre por marketing)
Javascript
Language de scripting interpretado
Tipado dbil (loose typing)
Objetos como contenedores generales
Herencia mediante prototipos
Funciones lambda
Funcionamiento empotrado con objetos predefinidos
Math, String, Date, Window, Document,
Generalidades de JavaScript
Elementos de JavaScript:
Objetos
Expresiones
Estructuras de control
Funciones
Arrays
Eventos
Valores de Javascript
Nmeros
Cadenas (String)
Booleanos
Objetos
null
undefined
Nmeros
Slo hay un tipo numrico (equivaldra a Double)
No hay enteros
Number(x) = convierte x a n
parseInt(x,r) = convierte x a n
Math = objeto predefinido con funciones matemticas
abs, floor,log,max,pow,random,sin, sqrt,
Cadenas
No hay tipo carcter
Pueden utilizarse comillas simples o dobles
cadena.length = longitud de cadena
String(x) = convierte x a String
cad1 + cad2 = concatena cad1 y cad2
Mtodos:
charAt, concat, indexOf, lastIndexOf, match,
replace, search, slice, split,
substring, toLowerCase, toUpperCase
Booleanos
Valores true, false
Null
Un valor que no es nada
Undefined
Valor por defecto variables y parmetros
Valor de miembros no definidos de objetos
Objetos
Salvo los tipos primitivos, todo son Objetos
Objeto Tabla Hash
new Object() = contenedor vaco, parejas nombre/valor
Los miembros se acceden mediante carcter punto (.)
Tipado dbil
El lenguaje no es "sin tipos"
La Etiqueta <script>
Sintaxis
<script>
//instrucciones javaScript
</script>
Objetos en Javascript
Objetos Predefinidos
String: Cada vez que se asigna una cadena de caracteres a
una variable, se crea un objeto de la clase String
Math: Se usa para efectuar clculos matemticos
Date: Para el manejo de fechas y horas
Array: almacena un conjunto de valores
Boolean
Mtodos habituales
String:
length(): longitud del string
replace(): reemplaza un texto por otro
ToUpperCase ():pasa a maysculas
Date:
getTime()
getFullYear()
getDay
Array
sort(): ordena elementos
concat(): concatena dos arrays
Math
Round()
max(), min()
PI
Nombres de Variables
Nombres sensibles maysculas/minsculas.
Deben comenzar por una letra o guin bajo. No deben
coincidir con palabras reservadas
Se podran definir como variables:
Nombre
_Opcin15
mes3
Declaracin:
Con la palabra reservada var: var x
Inicializacin:
var x = 42
Comentarios
Una lnea:
// comentario de una lnea
Varias lneas:
/*
comentario de varias lneas
*/
Bucles
While
Do while
For
For in
while (condicion) {
//cdigo
}
do {
//cdigo
} while (condicion);
Sentencias condicionales
if (condicion) {
//cdigo para condicin = true
} else {
//cdigo para condicin = false
}
switch (expresion){
case e1:
//cdigo si expresion == e1
break
case e2:
//cdigo si expresion == e2
break
default:
//cdigo si expresin no es ninguna
}
Operadores
Aritmticos: +, -, *, /, %, ++, -Asignacin: =, +=, -=, *=, /=, %=
Comparacin: ==, !=, >, <, >=, <=
Lgicos: &&, ||, !
Objetos y propiedades
Acceso a propiedades de un objeto:
nombreObjeto.nombrePropiedad
Las propiedades se definen asignndoles un valor
Es posible definir nuevos objetos de dos formas
diferentes:
Mediante inicializacin de objetos
Mediante una funcin constructora y new
No hay clases
Herencia mediante prototipos
Funciones
Sintaxis
function mifuncion(argumento1,argumento2,) {
//Cdigo
}
Libreras Javascript
Modernizr
Detectar soporte de carctersticas en navegadores antiguos
Compatibilidad entre navegadores
JQuery
Facilita la seleccin de elementos
Numerosos plugins
APIs HTML
APIs HTML
W3c define una serie de APIs para la Web
Objetivo: estandarizar desarrollo de Aplicaciones Web
Ejemplos:
Documentos (XML, HTML): DOM 1, 2, 3, 4
Canvas
Geolocalizacin
Web sockets
Offline
History
DOM
DOM = API para acceder y manipular documentos
Independiente de plataforma y lenguaje de programacin
Se define mediante IDL (Interfaz Definition Language)
La norma se define en niveles en lugar de versiones:
Niveles 1, 2, 3
DOM Nivel 1
Recomendacin en 1998
Contiene 3 partes:
DOM Core = Documentos XML y HTML (comn)
Estructura de rbol: Node, Element, Attr, ...
Manipulacin del rbol: appendChild, removeChild, ...
DOM Nivel 2
Finalizado en 2000 (recomendacin en 2003)
Incluye
Espacios de nombres
Hojas de estilos (CSS)
Modelo de eventos
getElementById
Recorridos (vista iterador, filtro, etc.)
DOM Nivel 3
Finalizado en 2004
Incluye
Soporte para XML Base
Cargar y almacenar documentos
XPath
Mezclar varios vocabularios
Validacin de documentos
Nuevos tipos de eventos
Estructura jerrquica
En DOM, un documento XML se representa como un
rbol
DOM proporciona mtodos, clases e interfaces para
acceder y manipular el rbol
<html>
<head>
<title>Ejemplo</title>
</head>
<body>
<h1>Cabecera</h1>
<p>Un prrafo</p>
</body>
</html>
html
head
body
title
h1
Ejemplo
Cabecera
p
Un prrafo
Elementos
<p>Un prrafo</p>
Element: p
Text: Un prrafo
Subelementos
<p>Un prrafo
<b>marcado</b>
</p>
Element: p
Text: Un prrafo
Element: b
Text: marcado
Jose Emilio Labra Gayo, Universidad de Oviedo
Atributos
<p class="right">Un prrafo
<em>enfatizado</em>
</p>
Element: p
Attr: class
Text: Un prrafo
Element: b
Text:right
Text: marcado
Jose Emilio Labra Gayo, Universidad de Oviedo
Principales Interfaces
Node
Element
Attr
Document
CharacterData
CDataSection
NodeList
NamedNodeMap
. . .
Nodo Documento
El nodo documento representa el documento entero
Mtodos de bsqueda:
documentElement: elemento raz
getElementByID: elemento a partir de un ID
getElementsByTagName: elementos con cierta etiqueta
Attrib1 ...
Attrib2 ...
parentNode
firstChild
item(0)
nextSibling
previousSibling
childNodes
lastChild
item(2)
item(1)
nextSibling
previousSibling
parentNode
nodeValue : DOMString
Valor del nodo (si es un elemento, nulo, si es un atributo, valor)
attributes: NamedNodeMap
Lista de atributos del nodo
nodeValue
attributes
Element
etiqueta
Null
NamedNodeMap
Attr
nombre
valor
null
Document
#document
null
null
Text
#text
contenido
del texto
null
...
...
...
...
Lista de nodos
El interfaz NodeList indica una lista de nodos
Los tems son accedidos mediante el ndice
item(0), item(1), etc.
APIs de HTML
Acceso a HTML
Acceso a CSS
Canvas
History
Websockets
Geoposicionamiento
Almacenamiento local
Aplicaciones offline
Diagrama
window
document
event
navigator
history
Interfaz Document
Algunas propiedades:
body: devuelve el cuerpo del documento
lastModified: Fecha y hora de ltima modificacin
readyState: Estado de carga
title: Ttulo
URL: URL del documento
Algunos mtodos:
close(): Cierra el documento
open(): Abre un documento
write(), writeln(): Escribe contenido en un documento
Contexto de navegacin
Entorno en el que se visualizan los documentos
Cada documento contiene:
Objeto WindowProxy con interfaz Window
Objeto Location
Secuencia de documentos histricos con interfaz History
Interfaz Window
Mtodos: close(), stop(), focus(), blur()
alert(msg), confirm(msg), prompt(msg), print(),
showModalDialog()
var n = document.getElementById("nota");
n.style.border="thick solid red";
Eventos HTML
Manejador de eventos: Gestiona los eventos
Crear manejadores de eventos propios
Eventos:
Tipo
Eventos
Ratn
Teclado
keydown,keypress,keyup
Documento
abort, error,load,resize,scroll,unload
Formularios
blur,change,focus,reset,select,submit
API Canvas
Canvas
Propuesto originalmente por Apple (2004)
Apple Dashboard Widget
Actualmente funciona en los principales navegadores
Canvas
getContext("2d"): Obtiene contexto 2D de dibujo
El objeto contexto se encarga de realizar los dibujos
<html>
<head><title>Ejemplo</title></head>
<script type="text/javascript" charset="utf-8">
function dibuja_canvas() {
var canvas = document.getElementById("idCanvas");
var context = canvas.getContext("2d");
context.fillRect(50, 25, 150, 100);
}
</script>
<body>
<canvas id="idCanvas" width="300" height="225"></canvas>
<h1 onclick="dibuja_canvas()">Dibuja</h1>
</body>
</html>
API Canvas
Propiedad/Mtodo
Parmetros
fillStyle
Color de relleno
Color, patrn gradiente
strokeStyle
Color de pluma
Color, patrn gradiente
fillRect(x,y,ancho,alto)
strokeRect(x,y,ancho,alto)
Pinta un rectngulo
removeRect(x,y,ancho,alto)
Borra un rectngulo
arc(x,y,nguloInicio,nguloFin,dir)
Dibuja un arco
fill()
Rellena
stroke()
Pinta
globalAlpha
Opacidad
Caminos (Paths)
Propiedad/Mtodo
Parmetros
beginPath()
Iniciar camino
closePath()
Cerrar camino
moveTo(x,y)
Mover a un punto
lineTo(x,y)
Lnea a un punto
arcTo(x1,y1,x2,y2,radio)
Arco
quadraticCurveTo(cpx,cpy,x,y)
Curva cuadrtica
Rectngulo
arc(x,y,r,angInicio,angFin,dir)
Arco
Parmetros
save()
restore()
Imgenes
Propiedad/Mtodo
Parmetros
drawImage(url)
Imgenes de datos
createImageData()
getImageData()
putImageData()
Texto
Propiedad/Mtodo
Parmetros
fillText(texto,x,y)
Escribe un texto
strokeText(texto,x,y)
Rellena un texto
Libreras Canvas
ProcessingJs (http://processingjs.org/)
Ai2canvas (http://visitmix.com/labs/ai2canvas/)
Exportar Adobe Illustrator a Canvas
Canvas vs SVG
Canvas
SVG
Mtodo de
trabajo
Elementos
Estilos
Script y CSS
Modelo de
eventos
Interaccin mediante
coordenadas (x,y)
Rendimiento
Canvas vs SVG
Pantallas
capturadas
Escenas
complejas,
muchos
objetos
Diagramas
interactivos,
Grafos
Juegos 2D
Manipular
vdeos
Imgenes
estticas
Documentos
de alta calidad
Impresin
Anuncios Web
Almacenamiento
API Almacenamiento
Antes de HTML5 existan diversos mtodos:
Cookies, FlashStorage, IE UserData,
En HTML5
APIs WebStorage
Se accede mediante: window.localStorage, window.sessionStorage
Almacenamiento local
Se accede mediante window.localStorage
Se mantiene ante recargas de la pgina
Evita sobrecarga de HTTP de las cookies
Ej. Preferencias de usuario
Descripcin
setItem('clave', valor);
getItem('clave');
length
N de items
key(n)
Clave de la posicin n
removeItem('clave');
clear()
Almacenamiento de sesin
Se accede mediante window.sessionStorage
Similar a localStorage pero:
Se mantienen los datos mientras el navegador est abierto
Al abrir ventana o pestaa nueva se inicia una sesin nueva
til para datos sensibles (ej. datos bancarios)
Aplicaciones offline
Aplicaciones offline
Es posible conocer si una aplicacin est online/ofline
window.navigator.online = true si est conectado
Permite cambiar la lgica de la aplicacin si no hay conexin
Cach de la aplicacin
Mediante el atributo manifest se pueden indicar los ficheros a
descargarse en el cliente
La aplicacin seguir teniendo acceso a esos ficheros auque est
offline
Aplicaciones offline
Facilita la creacin de aplicaciones Web que no
dependan de tener acceso a Internet
<!DOCTYPE HTML>
<html manifest="hora.manifest">
<head>
<script src="hora.js"></script>
</head>
<body>
<p>La hora es: <output id="hora"></output></p>
</body>
</html>
hora.js
setTimeout(function () {
document.getElementById('hora').value = new Date();
}, 1000);
hora.manifest
CACHE MANIFEST
hora.html
hora.js
Geolocalizacin
Geolocalizacin
Permite acceder a la ubicacin del cliente
El mtodo depende del navegador:
Direccin IP, conexin red inalmbrica, antena, GPS
Importante: no hay garanta de que sea exacta
Acceso:
navigator.geolocation.getCurrentPosition
Mtodo/Propiedad
Descripcin
coords
timestamp
Instante de tiempo
Otras APIs
Drag & drop: Permite arrastrar y soltar elementos
Web workers: Permite hilos de concurrencia
Sincronizacin mediante paso de mensajes
Fin de la Presentacin