HTML5 PDF
HTML5 PDF
HTML5, CSS3 y
Javascript
CURSO ACELERADO
C AP TU L O 1
HTML 5
HTML5 implica saber que hoy en da no empresas de tecnologa que cuentan con
nos conectamos solo desde el ordenador frontends, backends, sysadmins, mobile
sino desde telfonos mviles, tabletas, devs, comunity managers y arquitectos
eBooks, netbooks, y otra gama de disposi- de informacin en los proyectos que es-
tivos. El html5 supuso que se acabaron tn reiventando mercados
los webmasters independientes y hoy ha-
blamos de equipos multidisciplinarios de
1
Podemos hablar de todas las empresas La versin anterior y ms usada de
gigantes de la web: Microsoft, Google, HTML, HTML4, carece de caractersti-
Apple, Adobe, Facebook, Yahoo, Mozilla cas necesarias para la creacin de aplica-
y miles de proyectos tecnolgicos que ciones modernas basadas en un navega-
hoy se basan en HTML5, lo apoyan y tie- dor. El uso fuerte de Javascript ha ayuda-
nen propuestas que los hacen competir do a mejorar esto, gracias a frameworks
en cdigo en el navegador ms cercano y como jQuery, entre otros.
desde cualquier dispositivo.
2
S EC C I N 1
ETIQUETAS DE HTML5
HTML4 y HTML5 son 100% compatibles lo que va a recibir, y cmo deber proce-
entre s. Todo el cdigo que tienes en sarlo. De esta manera, la misma pgina,
HTML normal seguir funcionando sin con distintos doctype, o peor an, sin l,
problemas en HTML5. Para empezar a se ver de distinta manera, incluso en el
usar HTML5 lo nico que tienes que ha- mismo navegador.
cer es colocar este DOCTYPE4 antes de
Por ello, es necesario elegir adecuada-
la etiqueta <html>:
mente un doctype, y seguirlo.
3
doctype. Cmo hacerlo? Pues mediante
el validador de la W3C.
<NAV>
Igual que <header>, <nav> est disea-
do para que ah coloques la botonera de
VALIDAR EL CSS:
navegacin principal. Puedes colocar
Se trata de verificar que el CSS que he-
cualquier etiqueta dentro, aunque lo re-
mos escrito, es igualmente adecuado y
comendado es usar listas <ul>.
sin errores.
4
ser el rea de indicadores econmicos, o EJEMPLO DE NUEVAS ETIQUETAS
muy normalmente la publicidad. HTML5
<header>
<FOOTER> <hgroup>
Este es obvio. Es el pie de pgina y todo <h1>El blog de html5</h1>
lo que lo compone. <h2>Este es el blog de html5</h2>
</hgroup>
Atencin <div> no est muerto: Estas </header>
nuevas etiquetas no significan que ya no <nav>
se use <div>. Div siempre debe usarse Aqu va la botonera de navegacin
5
S EC C I N 2
<CANVAS>
6
S EC C I N 3
FORMULARIOS WEB
Para el usuario, los formularios tienen 13 NUEVOS ATRIBUTOS:
ahora en HTML5 un comportamiento
ms inteligente, un campo de fecha mos- AUTOFOCUS
trar al usuario un calendario interacti- Hacemos foco en el input que tenga
vo, o hints (pistas) sobre qu ingresar en asociado ste valor al cargar la pgina
ese campo, foco automtico en el campo
PLACEHOLDER
inicial, formato correcto a medidas de
Para ofrecer una pista de lo que el
tiempo o seleccionar color mediante una
usuario debe ingresar
paleta de colores.
ACCEPT
Permite que solo el tipo de archivo de-
Html5 agrega MUCHAS novedades, nue- terminado pueda ser cargado en el for-
vos atributos, elementos y tipos de cam- mulario
pos. MULTIPLE
Permite seleccionar mltiples archivos
para ser cargados de una vez por el for-
Todos los ejemplos que salen a continua- mulario
cin funcionan en el navegador Opera,
MAX / MIN / STEP
pues es el que actualmente soporta me-
Podemos delimitar rango de valores
jor la mayora de las nuevas caractersti-
numricos permitidos mximos, mni-
cas, tambin muchas funcionan bien en
mos y mltiplos dentro de un rango.
Chrome, Firefox y hasta en Explorer, pe-
ro varias slo estn disponibles para Ope- FORM NO DISPONIBLE
ra actualmente. Pero esto no es razn pa- Este atributo nos permite colocar un
ra no usarlos, sino al contrario, porque elemento en cualquier parte de la pgi-
no sern visibles para algunos pero les na, no solamente dentro del form tag, y
ser muy til a quienes utilicen navega- que ste siga siendo procesado por el
dores modernos. form. Adems permite asociar un mismo
7
elemento a mas de un form simultanea- Para sobreescribir la codificacin por
mente defecto del formulario
REQUIRED FORMMETHOD
Atributo booleano que determina si el Para sobreescribir el mtodo de envo
elemento debe ser obligatorio o no por defecto del formulario
PATTERN
Para validar un elemento en base a
5 NUEVOS ELEMENTOS:
una expresin regular (RegEx)
DIRNAME NO DISPONIBLE
PROGRESS
Enva la direccin en que fue ingresa- Representa el grado de progreso de
do el texto en un input determinado (ej: una tarea o accin (ej: Representar la car-
de derecha a izquierda) ga de una imgen)
NOVALIDATE
METER
Evita la validacin del elemento al en- Se utiliza para medir algo con una esca-
viar el formulario la determinada, como temperatura o dis-
FORMACTION tancias.
Para sobreescribir el comportamiento
DATALIST
por defecto del formulario Si asociamos un text input a un Data-
FORMENCTYPE list (lista de valores) al hacer foco en ese
8
input aparece un dropdown mostrando DATETIME
el contenido del elemento Datalist Formato de fecha y hora con zona hora-
ria UTC
KEYGEN
Genera un par de claves de control pri- DATE
vada que se guarda en local y pblica Formato de fecha sin zona horaria
que se enva al servidor MONTH
SEARCH COLOR
Sugiere ingreso de texto en el input Para elegir colores de una paleta
(La diferencia entre search y un input de
texto comn es que puede ser reconoci-
do por la plataforma en la cual es visto Recuerda que elementos y atributos co-
para igualar su estilo) mo placeholder, autofocus, email, data-
list y required, entre los ms comunes,
URL
ya tienen un amplio soporte, y como al-
Para ingresar direcciones web absolu-
ternativa, siempre tenemos la posibili-
tas
dad de ofrecer una experiencia similar
EMAIL utilizando soporte de libreras de javas-
Para valores nicos o mltiples de di- cript (como modernizr) para navegado-
reccines de email res que no soportan an estos avances
9
de forma tal de ir incorporando poco a RESUMEN DE LAS ETIQUETAS EN LOS
poco esta nueva experiencia al diseo co- FORMULARIOS EN HTML 5
tidiano.
NUEVOS TIPOS DE ENTRADA:
Fuentes:
<input type="email" />
W 3 c S p e c i f i c a t i o n <input type="url" />
*http://wufoo.com/html5/ <input type="date" />
<input type="time" />
<input type="datetime" />
<input type="month" />
<input type="week" />
<input type="number" />
<input type="range" />
<input type="tel" />
<input type="search" />
<input type="color" />
NUEVOS CONTROLES:
<output></output>
NUEVOS ATRIBUTOS:
autofocus
min
max
pattern
placeholder
required
step
10
EJEMPLO DE FORMULARIO HTML5 <section>
SIMPLE <p>Texto de la noticia #2...</p>
<!DOCTYPE html> </section>
<html> </article>
<head> </section>
<title>HTML5 test</title> <aside>
<meta content="text/html; <form>
charset=ISO-8859-1" http-equiv="content- <p><label>Nombre: <input name="name"
type" /> required></label></p>
</head> <p><label>E-mail: <input name="email"
<body> type="email" required></label></p>
<header> <p><label>Edad: <input type="number"
<nav> min="0" max="99" step="1" value="33"></
<ul> label></p>
<li><a href="#">Inicio</a></li> <p><label>Edad: <input type="range"
<li><a href="#">Pedidos</a></li> min="0" max="10" step="2" value="6"></
<li><a href="#">Facturas</a></li> label></p>
<li><a href="#">Administracin</a></li> <p><label>URL: <input name="url"
</ul> type="url"></label></p>
</nav> <p><label>Commentario: <textarea
<form> name="comment" required></textarea></
<input type="search" name="q" label></p>
placeholder="Bsqueda" /> <p><input type="submit"
</form> value="Enviar"></p>
</header> </form>
<section> </aside>
<article> <footer>
<header> <p>Copyleft 2010</p>
<h2>Noticia #1</h2> </footer>
</header> </body>
<section> </html>
<p>Texto de la noticia #1...</p>
</section>
</article>
<article>
<header>
<h2>Noticia #2</h2>
</header>
11
EJEMPLO DE FORMULARIO HTML5 <br />
COMPLEJO Semana: <input type="week"
name="week_control" />
<br />
<!DOCTYPE html> Nmero (min -10, max 10): <input
<html> type="number" name="number_control"
<head> min="-10" max="10" value="0" />
<meta charset="utf-8" /> <br />
Intervalo (min 0, max 10): <input
type="range" name="range_control" min="0"
<title>Ejemplo nuevos controles</title> max="10" value="0" /> <output
</head> for="range_control"
name="range_control_value" >0</output>
<body> <br />
<form action="." Telfono: <input type="tel"
oninput="range_control_value.value = name="tel_control" />
range_control.valueAsNumber"> <br />
<p> Trmino de bsqueda: <input type="search"
Nombre: <input type="text" name="search_control" />
name="name_control" autofocus required /> <br />
<br /> Color Favorito: <input type="color"
Correo Electrnico: <input type="email" name="color_control" />
name="email_control" required /> <br />
<br />
<input type="submit" value="Submit!" />
URL: <input type="url" name="url_control" </p>
placeholder="Escribe la URL de tu pgina
</form>
web personal" />
</body>
<br />
</html>
Fecha: <input type="date"
name="date_control" />
<br />
Tiempo: <input type="time"
name="time_control" />
<br />
Fecha y hora de nacimiento: <input
type="datetime" name="datetime_control" />
<br />
Mes: <input type="month"
name="month_control" />
12
EL PROBLEMA DE COMPATIBILIDAD VALIDACIN EN CLIENTE DE
CON LOS NAVEGADORES FORMULARIOS
13
14
S EC C I N 4
AUDIO Y VIDEO
Hablar de vdeo en internet es hablar de Adobe por su parte haba logrado impor-
ciclos, de batallas entre los CEOs ms in- tantes avances para que desde archivos
fluyentes en el mundo de tecnologa, de .swf pudieras incorporar videos, pero no
la compleja estandarizacin de un codec haba un solo canal.
o de un player. Hay un avance importan-
te con el tag <video> pero esto apenas
empieza y mucha de la historia segura- En el ao 2005, tres jvenes dejaron de
mente se va a repetir nuevamente. trabajar en Paypal y emprendieron el sue-
o de crear una plataforma universal pa-
ra compartir video. Ese ao nace Youtu-
Regresemos en el tiempo al ao 2004. be.
No exista Youtube. Por lo mismo, si que-
ras alojar y compartir en un navegador
cualquier vdeo te enfrentabas a dramas Paralelamente, Adobe demostr que su
de plataforma, de ancho de banda y de esfuerzo para crear un sistema para re-
problemas de usabilidad para el usuario producir vdeo iba a ser valorado y apro-
final. vechara el dominio que su plugin de
flash tena en todos los navegadores del
planeta. Los sysadmins educaron a sus
Si encontrabas algn enlace que te lleva- usuarios a crearse una cuenta en youtu-
ra a ver videos en la web seguramente te be y que dejaran de molestar con comple-
sonaran los logos de Real Player, de jos servidores para alojar y reproducir v-
Windows Media Player o incluso de deos.
Quicktime. Del lado del servidor los
sysadmins tenan que pelear con Real
Media Server, Windows Media Server En abril del 2010 una carta de Steve
que era parte del IIS y otro montn de Jobs a todos los clientes de apple sobre
opciones, pero era complicado unificar. sus pensamientos de Flash arranca uno
de esos nuevos ciclos donde una platafor-
15
ma disruptiva que cada da ganaba mer- El debate sobre Flash y HTML5 da par
cado le daba la espalda al famoso plugin mucho. Adobe tiene tecnologa slida y
de Adobe en sus dispositivos mviles. es de los reproductores que mejor entien-
Apple le prometa larga vida al HTML5 de de codecs y licencias. Es una solucin
porque todo se poda resolver en temas prctica para que no tengamos que en-
de vdeo con un tag aprobado por el es- frentarnos con esos problemas y sigue
tndar. Hoy volvemos a tener una bata- siendo la base de Youtube. Youtube si-
lla de grandes empresas por el codec lue- gue siendo la solucin prctica para com-
go de que estn todos de acuerdo que el partir en segundos un vdeo, le genere-
navegador lleva una opcin amigable pa- mos difusin y hagamos adems social
ra incluir un elemento de video, porque media.
este elemento es tan importante como
las imgenes.
Pero incluso Youtube est haciendo es-
fuerzos importantes en miras de
Y podemos usar perfectamente el ejem- HTML5, resolviendo otros dramas que
plo de las imgenes para entender lo que incluye este tag.
pasa con el video. Todos los navegadores
Revisa http://youtube.com/html5 con
permiten que en un documento HTML
un navegador moderno y conoce ms de
incluyas un tag <img> al cual debes de-
sus experimentos.
cirle la ruta a una imagen. Y la imagen
puede ser un .jpg, un .gif, un .bmp o un
.png (entre otros formatos). Depender No dejamos de usar flash, es ms, es uno
de la capacidad de tu navegador para re- de los planes ms seguros para que mu-
conocer todos los contenidos de esta im- chas personas y navegadores viejos pue-
gen, interpretarla y mostrarla. Con el vi- dan ver tus contenidos en vdeo.
deo pasa lo mismo.
16
Si hablamos de navegadores, recuerda Recomendamos utilizarlo si la funcin
que hay una versin donde el video em- de la pgina es mostrar un video. Si por
pez a existir. Antes, simplemente no va el contrario, el video nicamente ayuda-
a mostrar contenido y detectarlo para r a complementar la informacin (un
mostrar un player alternativo (en flash) post que tiene mltiples videos o referen-
es recomendado: cias, no lo recomendamos)
Para incluir un video con HTML5 usas el Y el anterior que le dir explicitamente
siguiente formato: que no tiene que precargar el video.
17
yers opciones pueden ser modificados CODECS.
con javascript + css3.
Hay 3 que importan hoy en da: H.264,
VP8 y Theora.
<video src=un-video.avi width=320
height=240 controls></video>
H.264
Conocido como MPEG-4 Advanced Vi-
Aqu es super importante entender una deo Codiging, es el ms popular hoy en
diferencia entre los tipos de archivo y los da, lo usa youtube cuando muestra vi-
codex con que el video ha sido procesa- deos desde el flash player (el flash player
do. Un .avi, .mp4 (o .m4v), un .flv (flash lo soporta sin problema). Es el que le da
video) y un .ogv simplemente contienen vida a los videos en un iPhone, en tu
un video, pero cada formato puede tener iPad. Incluso muchos reproductores de
diferente forma de codificarlo. Blue-ray lo soportan. Es genial, es asom-
broso, pero tiene algunos temas legales
detrs que complica su existencia. Hay
Los navegadores y las compaias que los
un grupo, el MPEG LA group que tiene
producen han elegido soportar nica-
patente sobre este formato y le quiere co-
mente a algunos codecs y lamentable-
brar a todos los que decodifiquen su for-
mente no existe una alternativa definiti-
mato. Google no es muy amigo de este
va y universal. En serio, no existe, tene-
formato. Chrome ya tiene el 20% del mer-
mos tag <video> y el drama ha quedado
cado y Android sigue creciendo. En ene-
por aqu, en que tienes que codificar tus
ro le dijeron adis.
videos al menos en algunos formatos pa-
ra asegurarte que funcione en todos la- http://blog.chromium.org/2011/01/htm
dos. Ven por qu Youtube sigue siendo l-video-codec-support-in-chrome.html
una opcin maravillosa?
VP8.
Google compr hace unos aos a una em-
presa llamada On2 por una millonada
porque tenan avances con desarrollos
de codecs de videos. Y unos aos des-
18
pus ponen a disposicin del mundo el dio tambin nos trae opciones y compli-
VP8. Es todo lo bueno que puedas pedir caciones que te recomendara investigar.
en este tipo de problemas legales ya que
La opcin de controls en el tag video
lo liberaron gratis, sin pagar derechos a
abre un mundo de posibilidades para
quien lo quiera usar. Es un regalito de
que te pongas a generar un reproductor
Google para el mundo. Pero Microsoft y
visible al usuario personalizado. Y los
Apple no quieren regalos de nadie, as
hackers del mundo han
que ya entenders cul es el problema de
este formato. visto opcin para poner su talento artsti-
co a disposicin de los dems.
THEORA.
No tiene dramas de patentes, es royalty
free, funciona en Linux y es el que viene
en archivos Ogg. De hecho, se basa en de-
sarrollos de On2 (la empresa que even-
tualmente fue adquirida por Google) y
llev esto por otro camino que es muy li-
bre, transparente, bueno, pero menos po-
pular. Puedes instalar decodificadores en
windows, en mac. Hoy lo soporta Chro-
me (junto a VP8) y suena maravilloso pe-
ro como todo lo gratis y open source,
Google es amigo de este formato.
19
ENLACES A PLAYERS valor por sobre lo que me puede entregar
Youtube.
Hay muchas opciones de players de vi-
deo que puedes utilizar e incluir en tus
Media Elements
pginas HTML5. La mejor opcin para
conocer este confuso panorama es la ta- http://mediaelementjs.com
bla que encontramos en esta web:
Otra de las propuestas, con un player pa-
http://praegnanz.de/html5video
ra <video> y <audio> que adems tiene
Las opciones son muchas y hay demasia- versiones compatibles con un flash pla-
dos grupos de desarrolladores aseguran- yer para navegadores viejos. Es de esos
do generar buenas alternativas al estan- que te permiten aprender bastante mien-
dar definido en cada navegador. tras juegas con su cdigo.
Sublime Video
http://sublimevideo.net
20
EJEMPLOS DE MULTIMEDIA
21
C AP TU L O 2
CSS 3
SELECTORES CSS
Vuelve lo que quieras transparente u opa-
co con una instruccin. Imgenes, tex-
Te ha tocado hacer un diseo donde tos, sombras, bordes, lo que sea. O si
una lista o tabla tiene algunos elementos quieres convertir una foto en blanco y ne-
en blanco y los otros en gris? Como una gro o sepia, lo puedes hacer con slo
cebra. Antes, la nica forma era hacerlo CSS.
a mano o con un script del lado del ser-
ver. Ahora, con CSS3, slo tienes que es-
pecificar un color para odd y otro para ANIMACIONES DE TRANSICIN Y
even y listo. TRANSFORMACIN
http://www.cristalab.com/tips/animaci
Sabes cmo se haca antes que varios p- ones-css3-en-html-con-jquery-c91636l
rrafos de texto se dividiera en columnas
con HTML? No se poda. Ahora slo re-
quieres un atributo CSS para lograrlo. Y
puedes controlar la cantidad de colum-
23
S EC C I N 1
SOMBRAS, GRADIENTES Y
TRANSFORMACIONES
BORDES REDONDEADOS #ejemplo
{
-moz-border-radius-topleft: 10px;
S. Con una instruccin puedes hacer -moz-border-radius-topright: 10px;
que cualquier caja tenga bordes redon- -moz-border-radius-bottomright: 10px;
deados como quieras. Olvidate de crear -moz-border-radius-bottomleft: 10px;
mltiples divs, cortar pngs y otros temas }
arcaicos.
Cdigo : Border-Radius
24
Entrar a http://border-radius.com y nos border-bottom-left-radius
encontramos con esto:
En esas esquinas marcadas en la aparte
anterior es donde debes ingresar el nu-
Webkit: Es un motor renderizado. Fun-
mero en pixeles de el grado de redondez
ciona como base para Safari y Google
deseada lo cual nos dar:
Chrome. En el CSS se representa:
Cdigo :
-webkit-border-radius
-webkit-border-top-left-radius
-webkit-border-top-right-radius
-webkit-border-bottom-right-radius
-webkit-border-bottom-left-radius
-moz-border-radius
-moz-border-radius-topleft
-moz-border-radius-topright
-moz-border-radius-bottomright
-moz-border-radius-bottomleft
Cdigo :
border-radius
border-top-left-radius
border-top-right-radius
border-bottom-right-radius
25
REFLEXIONES, GRADIENTES Y webkit-transform : rotate(0deg) scale(1)
SOMBRAS rotate(0deg);
}
Cdigo :
.mySelector {
-moz-transform : rotate(0deg) scale(1)
rotate(0deg);
26
C AP TU L O 3
JAVASCRIPT
JavaScript o tambin abreviado muchas que JavaScript nos va ayudar a dar dina-
veces JS por la extensin de los archivos mismo a la pgina.
.js. Sirve para desencadenar o activar
QU ES UN EVENTO EN JAVASCRIPT?
eventos motivados por acciones del clien- Es cuando desencadenamos una porcin
te (ocurre del lado del navegador) por de cdigo en base a una accin del usua-
eso se lo conoce como un lenguaje del la- rio. , como clic o doble clic, cargar la pagi-
do del cliente. Entonces esto se resume a na, salir de la pgina, etc.
27
Debemos recordar siempre que en JavaS- Ejemplo de JavaScript bsico
cript: Es sensible a maysculas y mins-
culas (Case Sensitive).
/*
se comenta esto
*/
// este es el segundo comentario
Lo que hemos hecho es abrir los tags des-
Los { } se utilizan para definir fragmen-
de la lnea 7 para crear nuestro cdigo Ja-
tos de cdigo.
vaScript y procedimos a crear una fun-
El ; nos ayuda a marcar el final de una cin que inspeccionara nuestro documen-
sentencia. to en bsqueda del Id parrafoPrincipal
para almacenar la fecha actual dentro de
la etiqueta HTML que posea ese Id.
28
S EC C I N 1
SALVANDO PREFERENCIAS DE
USUARIO
El almacenamiento local HTML5 se utili-
za para almacenar pares de clave-valor
Juegos: El almacenamiento local se pue-
en el lado del cliente. Estos pares de cla-
de utilizar para guardar el progreso de
ve-valor se pueden recuperar en pginas
un juego o las puntuaciones ms altas,
HTML que provengan del mismo domi-
que ms adelante se podrn recuperar.
nio. Los datos de almacenamiento local
se almacenan en el disco y se conservan Multimedia: Si una aplicacin web inte-
despus de reiniciar las aplicaciones. Pa- gra una secuencia de audio o vdeo, la
ra obtener informacin adicional sobre aplicacin puede almacenar la marca de
el almacenamiento local, lea la especifica- hora de estas secuencias en el almacena-
cin en miento local. Dado que estos datos se
http://dev.w3.org/html5/webstorage . conservan entre distintos reinicios de la
aplicacin, puede iniciar la secuencia de
audio o vdeo desde la ltima ubicacin
USO DEL ALMACENAMIENTO LOCAL pausada.
HTML5 EN LAS APLICACIONES
Las API JavaScript* siguientes se pue-
den utilizar para almacenar, recuperar,
El almacenamiento local HTML5 se pue- eliminar o borrar los datos:
de utilizar en aplicaciones que deben
guardar datos y preferencias de los usua-
rios de manera que se conserven des- Almacenar un valor:
pus de haber reiniciado las aplicacio- window.localStorage.setItem(keyinput,valinp
nes. A continuacin se ofrecen algunos ut)
29
Borrar todos los valores:
window.localStorage.setItem(keyinput,valinp
window.localStorage.clear()
ut);
}
if(typeof(window.localStorage) !=
else{
throw "window.localStorage, not 'undefined'){
window.localStorage. clear() ;
defined";
}
}
else{
throw "window.localStorage, not
Recuperar un valor: defined";
}
window.localStorage.getItem (keyinput);
var valoutput ;
if(typeof(window.localStorage) !=
'undefined'){
valoutput =
window.localStorage.getItem (key10);
}
else{
throw "window.localStorage, not
defined";
}
Eliminar un valor:
window.localStorage.removeItem(keyinput);
var valoutput ;
if(typeof(window.localStorage) !=
'undefined'){
valoutput = window.localStorage.
removeItem (key10);
}
else{
throw "window.localStorage, not
defined";
}
30
Cdigo de ejemplo: for input.*/
localStorageSample.html
function store_local(domid_prefix){
var keyinput =
document.getElementById('local_storage_ke
<!DOCTYPE HTML>
y').value;
var valinput =
<html>
document.getElementById('local_storage_val
<head>
ue').value;
<TITLE>HTML5 local storage tester
try{
(testbed)</TITLE>
</head>
if(typeof(window.localStorage) != 'undefined')
<body>
{
<div id="output_area"
style="position:relative;width:
window.localStorage.setItem(keyinput,valinp
100%;height:200px;overflow:auto;
ut);
border: dotted 1px #0000;">
}
</div>
else{
throw
<div>
"window.localStorage, not defined";
<input id="local_storage_key"
}
type="text" />
}
<input
catch(err){
id="local_storage_value" type="text" />
</div>
output_str("store_local,error," + err);
}
<div>
}
<input type="button"
value="load" onclick="load_local();"/>
/* load some string data from local
<input type="button"
storage
value="store" onclick="store_local();"/>
This is using some text input
</div>
elements on the page
<script id="this_page_js"
for the key name input and
type="text/javascript">
value output.*/
function output_str(str){
var da =
document.getElementById("output_area");
da.innerHTML += str + "<br/
>";
da.scrollTop = da.scrollHeight;
}
</script>
</body>
</html>
32
S EC C I N 2
WEB SOCKETS
Igual que XMLSockets en Actionscript, Hoy no son muchas las versiones esta-
Web Sockets permite hacer aplicaciones bles de browsers que lo soportan. No es
multiusuario en tiempo real, como jue- el caso de Google Chrome el cual viene
gos, chats, notificaciones, etc. Si el nave- con soporte para WebSockets desde su
gador no tiene soporte de Web Sockets, versin 4.
es posible usar implementaciones multiu-
Google Chrome 4 +
ser en Javascript como PubSubHubBub
Internet Explorer 9 beta +
http://code.google.com/p/pubsubhubbub/
Firefox 4 beta +
33
Una vez creado el objeto WebSocket va- De sta manera podemos tener una co-
mos a agregarle una serie de listeners pa- municacin bidireccional de manera sen-
ra poder manipular los eventos que ocu- cilla.
rran en el mismo.
Ahora veamos algunos escenarios donde
aplica la utilizacin de WebSockets
34
S EC C I N 3
GEOLOCALIZACIN
Una de las principales novedades de if (navigator.geolocation)
HTML5 fue la aparicin de nuevas APIs
{
de Javascript que aumentan la potencia
de este lenguaje. // Cdigo de la aplicacin
35
funcExito: funcin de retorno que se Tipo de dato
ejecutar si se obtiene la posicin. Se le
Descripcin
pasar como parmetro un objeto Posi-
tion. coords.latitude
Altitud en metros
EL OBJETO POSITION
coords.altitudeAccuracy
Es el objeto que nos indicar la ubica-
cin del usuario si el navegador puede de- double o null
terminarla. Este objeto consta de los si- Precisin de la altitud en metros
guientes atributos:
coords.heading
double o null
Atributo
36
Orientacin en grados decimales en el 1 El usuario ha denegado el acceso a la
sentido de las agujas del reloj obtencin de su ubicacin
coords.speed POSITION_UNAVAILABLE
Atributo
Es el objeto que nos indicar la causa
por la que no se ha podido determinar la Tipo de dato
ubicacin del usuario. Este objeto consta
Valor por defecto
de dos atributos: code y message. De es-
tos el que nos interesa es code que ser Descripcin
el que nos indique el error de forma ms
enableHighAccuracy
eficiente (message hace lo mismo pero
con una cadena explicativa del error). boolean
Valor false
long
OBTENER LA POSICIN DEL USUARIO
No tiene
38
}, function(objPositionError) Y en el siguiente cuadro podemos ver el
{ resultado de este script aplicado en esta
switch (objPositionError.code)
pgina:
{
case Latitud: 40.4373898
objPositionError.PERMISSION_DENIED:
content.innerHTML = Longitud: -3.6987106
"No se ha permitido el acceso a la posicin
del usuario.";
break;
case
objPositionError.POSITION_UNAVAILABLE:
content.innerHTML =
"No se ha podido acceder a la informacin
de su posicin.";
break;
case
objPositionError.TIMEOUT:
content.innerHTML = "El
servicio ha tardado demasiado tiempo en
responder.";
break;
default:
content.innerHTML =
"Error desconocido.";
}
}, {
maximumAge: 75000,
timeout: 15000
});
}
else
{
content.innerHTML = "Su navegador no
soporta la API de geolocalizacin.";
}
})();
39
EJEMPLO DE CMO CAPTURAR Y </div>
MOSTRAR LOS DATOS DE </section>
GEOLOCALIZACIN
<html> <script type="text/javascript" src="http://
maps.google.com/maps/api/js?
<head> sensor=true"></script>
} });
<header> navigator.geolocation.getCurrentPosition(coo
<h1>Localizador mediante HTML5</h1> rdenadas, errores);
</header> }else{
<section>
<article> alert('Oops! Tu navegador no soporta
<div id='map_canvas' style='width:100%; geolocalizacin. Bjate Chrome, que es
height:400px;'></div> gratis!');
</article>
}
<div id="respuesta">
40
} }
} var myOptions = {
}
var coorMarcador = new
if (err.code == 2) { google.maps.LatLng(latitud,longitud);
var marcador = new google.maps.Marker({
alert("Oops! No se puede obtener la posicin
actual"); position: coorMarcador,
41
map: map,
});
</script>
</body>
</html>
42
S EC C I N 4
WEB WORKERS
Saban que Javascript slo puede hacer EJEMPLO WEB WORKERS
una cosa al tiempo? Gran parte de la ra-
zn por la que Wave fall y las web apps <script language="javascript">
son simples es porque la multitarea es var worker = new Worker('myjavascript.js');
imposible. Web Workers soluciona eso. worker.onmessage = function(event)
Web Workers permite tener multiples .js { alert(event.data); };
</script>
corriendo en paralelo en una misma pgi-
na. Haciendo tareas complejas ms velo-
ces gracias al multithreading. OTROS PUNTOS A TENER EN CUENTA
CON WEBWORKERS
43
DOS EJEMPLOS DE HTML Y JS TRA-
BAJANDO JUNTOS
44
S EC C I N 5
WEBGL
WebGL creci desde los experimentos mtica se proporciona como parte del
del canvas 3D comenzados por Vladimir lenguaje JavaScript.
Vukievi en Mozilla. El primero mostr
WebGL carece de las rutinas matemti-
un prototipo de Canvas 3D en 2006. A
cas matriz eliminadas en OpenGL 3.0.
finales de 2007, tanto Mozilla2 como
Esta funcionalidad debe ser proporciona-
Opera3 haban hecho sus propias imple-
da por el usuario en el espacio de cdigo
mentaciones separadas. A principios de
JavaScript; este cdigo necesario se com-
2009 Mozilla y Khronos formaron el
plementa con frecuencia con una biblio-
WebGL Working Group (Grupo de Traba-
teca de matriz tal como glMatrix, TDL, o
jo del WebGL).
MJS.
El Grupo de Trabajo del WebGL incluye
Apple, Google, Mozilla, y Opera, y
WebGL ya est presente en las builds de IMPLEMENTACIN
Object Model. Gestin de memoria auto- Como WebGL es una tecnologa disea-
da para trabajar directamente con el
45
GPU (unidad de procesamiento grfico)
IMAGEN INTERACTIVA 3.1 Ejemplo de ani-
es difcil de codificar en comparacin macin html 5 integrada
con otros estndares web ms accesibles,
es por eso que muchas bibliotecas de Ja-
vaScript han surgido para resolver este
problema:
46
S EC C I N 6
function drag(ev)
{
ev.dataTransfer.setData("Text",ev.target.id);
}
function drop(ev)
{
ev.preventDefault();
var data=ev.dataTransfer.getData("Text");
ev.target.appendChild(document.getElement
ById(data));
47
S EC C I N 7
SVG Y CANVAS
SVG <canvas id="mycanvas" width="200"
renderizacin de grficos en funcin de height="100">
un documento SVG (Scalable Vector Gra- Your browser does not support the
<code>canvas</code> element.
phics),
</canvas>
<script language="javascript">
<svg>
<circle id="myCircle" var canvas =
cx="100" cy="75" r="50" document.getElementById('mycanvas');
fill="blue"
stroke="firebrick" var context = canvas.getContext('2d');
stroke-width="3" />
<text x="60" y="155">Hello World</text> contexto.fillRect(50, 0, 10, 150);
</svg>
</script>
CANVAS
48
S EC C I N 8
49
vez que un usuario acceda a travs de su siones optimizadas para estos dispositi-
iPhone a nuestra pgina, ser redirigido vos.
a la adaptacin que hemos diseado pa-
En este ejemplo se especifican solo tres
ra l.
agentes de usuario (iphone, ipad y kind-
le), pero se pueden usar varios.
Responsive design
El siguiente script en lenguaje PHP, in-
sertado al comienzo de una pgina Responsive web design no es ms que
index.php, re-direccionar a los dispositi- servir a todo tipo de dispositivos, la mis-
vos mviles cuyos agentes de usuario se ma pgina o sea el mismo contenido
especifiquen, a un directorio llamado en HTML, pero utilizar CSS3 para definir la
este ejemplo mobile, que contiene las ver- forma en que se representa, de acuerdo
al tamao de su pantalla.
50
Para eso se pueden emplear los coman- ocultar la barra lateral, se activa cuando
dos CSS: "@media handheld" y "@media el ancho del navegador es inferior a
screen". 800px.
Usar la Vista de diseo adaptable del na- Para probarlo carga en tu navegador:
vegador Firefox http://www.pikock.com/en/pi-responsive.htm