SlideShare una empresa de Scribd logo
© Juan Quemada, DIT, UPM
Ejemplo de un Cronómetro
1
Juan Quemada, DIT, UPM
© Juan Quemada, DIT, UPM
Cronómetro
WebApp similar a un cronómetro digital
Cuenta décimas de segundo (100 miliseg.)
n El contador se inicializa con 0,0 segundos
w n.toFixed(1) formatea con 1 decimal
Tiene 2 botones
n arrancar/parar: arranca o para la cuenta
w a partir del valor en que quedo
n arranca si cronómetro parado
n para si cronómetro contando
n inicializar: pone el contador a 0,0
La libreria zepto.js utilizada en los temas siguientes equivale a jQuery 2.0
n Los ejemplos pueden sustituir zepto por jQuery y funcionarán igual
w http://zeptojs.com/
2
Juan Quemada, DIT, UPM
© Juan Quemada, DIT, UPM
Cronómetro
3
Juan Quemada, DIT, UPM
© Juan Quemada, DIT, UPM
DOM como almacén de datos
El navegador guarda en document la página HTML que está mostrando
n document es un objeto JavaScript con propiedades
w que contienen todos los elementos de la página
Las propiedades DOM son variables: src, value, innerHTML, ....
n donde la información se puede guardar y recuperar
w DOM solo contiene strings y todo debe convertirse a/de string
Los elementos de DOM se pueden utilizar como variables
n Hemos utilizado el elemento <span id="crono">
w para almacenar el contador de decimas de segundo
4
Juan Quemada, DIT, UPM
© Juan Quemada, DIT, UPM
Memoria local en HTML5
5
Juan Quemada, DIT, UPM
© Juan Quemada, DIT, UPM
HTML5 implementa nuevos tipos de almacenamiento de variables
n Sencillas y eficientes de utilizar desde Javascript
w Definición: http://dev.w3.org/html5/webstorage/
Variables locales
n los datos se guardan permanentemente, hasta que se borran
Variables de sesión
n Los datos solo se guardan solo durante la sesión
w Comienzo de sesión: apertura de navegador o pestaña
w Final de sesión: cierre de navegador o pestaña
Almacenamiento de datos en cliente
6
Juan Quemada, DIT, UPM
© Juan Quemada, DIT, UPM
Son propiedades de los objetos localStorage y sessionStorage
n solo pueden contener strings, como por ejemplo
w localStorage.usuario = “Pedro Pérez”;
w sessionStorage.apellido = “Pérez”;
Las variables locales están asociadas a protocolo, dominio y puerto
n un programa solo puede acceder a propiedades de local/sessionStorage
w creadas por otros programas cargados del mismo servidor
Same origin policy
n Seguridad: un programa solo confia en programas del mismo servidor
n Modularidad: cada servidor tiene un espacio de nombres diferente
Variables locales y de sesión
7
Juan Quemada, DIT, UPM
© Juan Quemada, DIT, UPM
Cada usuario que acceda a esta página tendrá una cuenta diferente
n La variable está en su navegador
Ejemplo de localStorage
8
Juan Quemada, DIT, UPM
© Juan Quemada, DIT, UPM
Cronómetro con memoria
Nueva versión del cronómetro con localStorage
n así mantiene la cuenta de décimas de segundos
w entre usos sucesivos de la aplicación
El cronómetro utiliza ahora la variable
n localStorage.c
w para guardar la cuenta de segundos
Debemos inicializar localStorage.c
n con parámetro por defecto para cuando se ejecute por primera vez
Como la información se guarda ahora en localStorage y no en DOM
n hay que actualizar primero localStorage y luego mostrar en DOM
9
Juan Quemada, DIT, UPM
© Juan Quemada, DIT, UPM
Cronómetro:
localStorage
10
Juan Quemada, DIT, UPM
JavaScript y HTML5:
iframes y origin policy
11
© Juan Quemada, DIT, UPM
© Juan Quemada, DIT, UPM
iFrame
n Importa un recurso Web
w en un marco de navegación independiente
Un iFrame crea una caja de arena segura
n donde poder importar objetos externos
Ejemplo: enlaza un juego en otro servidor
n El iFrame evita que se introduzcan virus
w Acceso JavaScript limitado a caja de arena
iFrame
12
Juan Quemada, DIT, UPM
La seguridad se controla en las aplicaciones JavaScript
n Permitiendo que un programa JavaScript en un iframe solo acceda
w Al árbol DOM de la página principal si proviene del mismo origen
n Esto evita en el ejemplo anterior que el juego
w robe o modifique información o datos del usuario en la página externa
Origen
n protocolo, servidor y puerto del URL
La restricción de pertenecer al “mismo origen”
n Solo afecta al recurso principal: página Web, recurso, …
w Los scripts o los estilos no están afectados y pueden venir de otro servidor
Así es posible hacer “mash-ups” seguros
n de contenidos que no estén en nuestra cadena de confianza
© Juan Quemada, DIT, UPM
Seguridad Web: “Same Origin Policy”
13
Juan Quemada, DIT, UPM
Ejemplo con
iFrames
14
© Juan Quemada, DIT, UPMJuan Quemada, DIT, UPM
Flexbox
15
© Juan Quemada, DIT, UPMJuan Quemada, DIT, UPM© Juan Quemada, DIT, UPMJuan Quemada, DIT, UPM
Flexbox permite un diseño
responsivo fácil y flexible:
display: flex;
flex-wrap: wrap;
coloca cada iframe a la derecha
del anterior. Al llegar al limite
pasa a la línea siguiente.
Código
16
© Juan Quemada, DIT, UPMJuan Quemada, DIT, UPM
© Juan Quemada, DIT, UPM
JSON: JavaScript Object Notation
17
Juan Quemada, DIT, UPM
JSON: formato textual de representación de tipos y objetos JavaScript
n http://json.org/json-es.html
Un objeto JavaScript se transforma a un string JSON con
n JSON.stringify(object)
Un string JSON se transforma en el objeto original con
n JSON.parse(string_JSON)
© Juan Quemada, DIT, UPM
JSON
var x = {a:1, b:{y:[false, null, ""]}}, y, z;
y = JSON.stringify(x); => '{"a":1, "b":{"y":[false, null, ""]}}'
z = JSON.parse(y); => {a:1, b:{y:[false, null, ""]}}
18
Juan Quemada, DIT, UPM
© Juan Quemada, DIT, UPM
Serialización:
n transformación reversible de un tipo u objeto (en
memoria) en un string equivalente
La serialización es un formato de intercambio de datos
n Almacenar datos en un fichero
n Enviar datos a través de una línea de comunicación
n Paso de parámetros en interfaces REST
En JavaScript se realiza desde ECMAScript 5 con
n JSON.stringify(...) y JSON.parse(...)
Otros formatos de serialización: XML, HTML, XDR(C), ...
n Estos formatos están siendo desplazados por JSON, incluso XML
w Hay bibliotecas de JSON para los lenguajes más importantes
Serialización de datos
19
Juan Quemada, DIT, UPM
JSON puede serializar
n objetos, arrays, strings, números finitos, true, false y null
w NaN, Infinity y -Infinity se serializan a null
w Objetos Date se serializan a formato ISO
n la reconstrucción devuelve un string y no el objeto original
n No se puede serializar
w Funciones, RegExp, errores, undefined
Admite filtros para los elementos no soportados
n ver doc de APIs JavaScript
© Juan Quemada, DIT, UPM
Características de JSON
JSON.stringify(new Date()) => '"2013-08-08T17:13:10.751Z"'
JSON.stringify(NaN) => 'null'
JSON.stringify(Infinity) => 'null'
20
Juan Quemada, DIT, UPM
JSON en ejemplo con
iframes, array y for
21
© Juan Quemada, DIT, UPMJuan Quemada, DIT, UPM
Si queremos
almacenar en el
navegador el
array de urls
para que no se
pierdan los urls
introducidos, hay
que guardarlo
serializado con
JSON en
localStorage
© Juan Quemada, DIT, UPM
Final del tema
Muchas gracias!
22
Juan Quemada, DIT, UPM

Más contenido relacionado

La actualidad más candente (12)

TABLEUR Excel
TABLEUR ExcelTABLEUR Excel
TABLEUR Excel
 
Excel 2010
Excel 2010Excel 2010
Excel 2010
 
Clase 1 y 2 herramientas informatica mayo 2020 loayza
Clase 1 y 2 herramientas informatica mayo 2020 loayzaClase 1 y 2 herramientas informatica mayo 2020 loayza
Clase 1 y 2 herramientas informatica mayo 2020 loayza
 
Cours access
Cours accessCours access
Cours access
 
100-ejercicios-de-microsoft-word.auxiliar administrativopdf
100-ejercicios-de-microsoft-word.auxiliar administrativopdf100-ejercicios-de-microsoft-word.auxiliar administrativopdf
100-ejercicios-de-microsoft-word.auxiliar administrativopdf
 
Cours d'algorithmique
Cours d'algorithmiqueCours d'algorithmique
Cours d'algorithmique
 
NEF – PI – FILE TEST 6 – READING EXERCISES
NEF – PI – FILE TEST 6 – READING EXERCISESNEF – PI – FILE TEST 6 – READING EXERCISES
NEF – PI – FILE TEST 6 – READING EXERCISES
 
Logic gates bangla
Logic gates banglaLogic gates bangla
Logic gates bangla
 
Formato de celdas pdf
Formato de celdas pdfFormato de celdas pdf
Formato de celdas pdf
 
NOTES ON "FOXPRO"
NOTES ON "FOXPRO" NOTES ON "FOXPRO"
NOTES ON "FOXPRO"
 
Banco de preguntas de computacion i microsoft word-ene-marz-2014
Banco de preguntas de computacion i   microsoft word-ene-marz-2014Banco de preguntas de computacion i   microsoft word-ene-marz-2014
Banco de preguntas de computacion i microsoft word-ene-marz-2014
 
Módulo excel
Módulo excelMódulo excel
Módulo excel
 

Destacado

Introducción al Diseño web
Introducción al Diseño webIntroducción al Diseño web
Introducción al Diseño web
ciwmx
 
정품수면제구입 ̄http://7cc.kr"「톡:c2017」정품수면제 구입처г수면제 구입방법ㄅ수면제 판매,수면제 구입,수면제 파는곳,수면제 약...
정품수면제구입 ̄http://7cc.kr"「톡:c2017」정품수면제 구입처г수면제 구입방법ㄅ수면제 판매,수면제 구입,수면제 파는곳,수면제 약...정품수면제구입 ̄http://7cc.kr"「톡:c2017」정품수면제 구입처г수면제 구입방법ㄅ수면제 판매,수면제 구입,수면제 파는곳,수면제 약...
정품수면제구입 ̄http://7cc.kr"「톡:c2017」정품수면제 구입처г수면제 구입방법ㄅ수면제 판매,수면제 구입,수면제 파는곳,수면제 약...
成 金
 
Empresa de producción de gas metano
Empresa de producción de gas metanoEmpresa de producción de gas metano
Empresa de producción de gas metano
laura melo
 

Destacado (19)

Javascript Módulo 7 - PROFUNDIZACIÓN EN ARRAYS, OBJETOS, PROPIEDADES, MÉTODOS...
Javascript Módulo 7 - PROFUNDIZACIÓN EN ARRAYS, OBJETOS, PROPIEDADES, MÉTODOS...Javascript Módulo 7 - PROFUNDIZACIÓN EN ARRAYS, OBJETOS, PROPIEDADES, MÉTODOS...
Javascript Módulo 7 - PROFUNDIZACIÓN EN ARRAYS, OBJETOS, PROPIEDADES, MÉTODOS...
 
Javascript Módulo 5 - javascript sentencia, expresión, variable, función - Un...
Javascript Módulo 5 - javascript sentencia, expresión, variable, función - Un...Javascript Módulo 5 - javascript sentencia, expresión, variable, función - Un...
Javascript Módulo 5 - javascript sentencia, expresión, variable, función - Un...
 
Javascript - Módulo 4: Booleano, if/else, string, número, DOM, eventos e inte...
Javascript - Módulo 4: Booleano, if/else, string, número, DOM, eventos e inte...Javascript - Módulo 4: Booleano, if/else, string, número, DOM, eventos e inte...
Javascript - Módulo 4: Booleano, if/else, string, número, DOM, eventos e inte...
 
Javascript Módulo 5 - Bucles, Arrays. Funciones como objectos. Ámbitos. Cierr...
Javascript Módulo 5 - Bucles, Arrays. Funciones como objectos. Ámbitos. Cierr...Javascript Módulo 5 - Bucles, Arrays. Funciones como objectos. Ámbitos. Cierr...
Javascript Módulo 5 - Bucles, Arrays. Funciones como objectos. Ámbitos. Cierr...
 
Javascript - Módulo 9: Geolocalización en HTML5, Google maps, y SVG
Javascript - Módulo 9: Geolocalización en HTML5, Google maps, y SVGJavascript - Módulo 9: Geolocalización en HTML5, Google maps, y SVG
Javascript - Módulo 9: Geolocalización en HTML5, Google maps, y SVG
 
Best grade progress report
Best grade progress reportBest grade progress report
Best grade progress report
 
Introducción al Diseño web
Introducción al Diseño webIntroducción al Diseño web
Introducción al Diseño web
 
부천 임플란트 잘하는곳 연세퍼스트치과
부천 임플란트 잘하는곳 연세퍼스트치과부천 임플란트 잘하는곳 연세퍼스트치과
부천 임플란트 잘하는곳 연세퍼스트치과
 
정품수면제구입 ̄http://7cc.kr"「톡:c2017」정품수면제 구입처г수면제 구입방법ㄅ수면제 판매,수면제 구입,수면제 파는곳,수면제 약...
정품수면제구입 ̄http://7cc.kr"「톡:c2017」정품수면제 구입처г수면제 구입방법ㄅ수면제 판매,수면제 구입,수면제 파는곳,수면제 약...정품수면제구입 ̄http://7cc.kr"「톡:c2017」정품수면제 구입처г수면제 구입방법ㄅ수면제 판매,수면제 구입,수면제 파는곳,수면제 약...
정품수면제구입 ̄http://7cc.kr"「톡:c2017」정품수면제 구입처г수면제 구입방법ㄅ수면제 판매,수면제 구입,수면제 파는곳,수면제 약...
 
Empresa de producción de gas metano
Empresa de producción de gas metanoEmpresa de producción de gas metano
Empresa de producción de gas metano
 
Chrismas project
Chrismas projectChrismas project
Chrismas project
 
V par craneal ( TRIGEMINO )
V par craneal ( TRIGEMINO )V par craneal ( TRIGEMINO )
V par craneal ( TRIGEMINO )
 
La primera etapa de la investigación
La primera etapa de la investigaciónLa primera etapa de la investigación
La primera etapa de la investigación
 
Science - Engineering - Design - Artのサイクル
Science - Engineering - Design - ArtのサイクルScience - Engineering - Design - Artのサイクル
Science - Engineering - Design - Artのサイクル
 
Contabilidad
ContabilidadContabilidad
Contabilidad
 
20170309
2017030920170309
20170309
 
Multimodalidad o transmision simultanea de contenidos verbales, visuales y so...
Multimodalidad o transmision simultanea de contenidos verbales, visuales y so...Multimodalidad o transmision simultanea de contenidos verbales, visuales y so...
Multimodalidad o transmision simultanea de contenidos verbales, visuales y so...
 
Sistema monetario internacional
Sistema monetario internacionalSistema monetario internacional
Sistema monetario internacional
 
Trabajo mayoli
Trabajo mayoliTrabajo mayoli
Trabajo mayoli
 

Similar a Javascript - Módulo 8: LocalStorage, iFrames, Origin policy y JSON

Instalacion de Postrgre sql en ubuntu
Instalacion de Postrgre sql en ubuntuInstalacion de Postrgre sql en ubuntu
Instalacion de Postrgre sql en ubuntu
David Vevelas
 

Similar a Javascript - Módulo 8: LocalStorage, iFrames, Origin policy y JSON (20)

Introducción js
Introducción jsIntroducción js
Introducción js
 
Web services restful con JAX-RS
Web services restful con JAX-RSWeb services restful con JAX-RS
Web services restful con JAX-RS
 
Programación del lado del cliente
Programación del lado del clienteProgramación del lado del cliente
Programación del lado del cliente
 
Tema4 apartado4.2
Tema4 apartado4.2Tema4 apartado4.2
Tema4 apartado4.2
 
Clase2
Clase2Clase2
Clase2
 
Mod00 transparencias
Mod00 transparenciasMod00 transparencias
Mod00 transparencias
 
Trabajo Final Dani
Trabajo  Final DaniTrabajo  Final Dani
Trabajo Final Dani
 
Php 6 y Mysql
Php 6 y MysqlPhp 6 y Mysql
Php 6 y Mysql
 
Guia practica java script
Guia practica java scriptGuia practica java script
Guia practica java script
 
Guia JavaScript INCES Militar - Kurt Gude
Guia JavaScript INCES Militar - Kurt GudeGuia JavaScript INCES Militar - Kurt Gude
Guia JavaScript INCES Militar - Kurt Gude
 
Fund Java
Fund JavaFund Java
Fund Java
 
Introducción JavaScript
Introducción JavaScriptIntroducción JavaScript
Introducción JavaScript
 
AJAX EN CURSO PHP
AJAX EN CURSO PHPAJAX EN CURSO PHP
AJAX EN CURSO PHP
 
Ajax: introducción
Ajax: introducciónAjax: introducción
Ajax: introducción
 
Instalacion de Postrgre sql en ubuntu
Instalacion de Postrgre sql en ubuntuInstalacion de Postrgre sql en ubuntu
Instalacion de Postrgre sql en ubuntu
 
SyntheticEvent – React.pdf
SyntheticEvent – React.pdfSyntheticEvent – React.pdf
SyntheticEvent – React.pdf
 
Guía JavaScript
Guía JavaScriptGuía JavaScript
Guía JavaScript
 
Seguridad
SeguridadSeguridad
Seguridad
 
INFOSAN Objetos del navegador
INFOSAN Objetos del navegador INFOSAN Objetos del navegador
INFOSAN Objetos del navegador
 
Hx c18
Hx c18Hx c18
Hx c18
 

Último

PRÁCTICAS DEL MÓDULO I Y II DE EDUCACIÓN Y SOCIEDAD.docx
PRÁCTICAS DEL MÓDULO I Y II DE EDUCACIÓN Y SOCIEDAD.docxPRÁCTICAS DEL MÓDULO I Y II DE EDUCACIÓN Y SOCIEDAD.docx
PRÁCTICAS DEL MÓDULO I Y II DE EDUCACIÓN Y SOCIEDAD.docx
encinasm992
 
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
vazquezgarciajesusma
 
proyecto invernadero desde el departamento de tecnología para Erasmus
proyecto invernadero desde el departamento de tecnología para Erasmusproyecto invernadero desde el departamento de tecnología para Erasmus
proyecto invernadero desde el departamento de tecnología para Erasmus
raquelariza02
 

Último (20)

(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
 
PRÁCTICAS DEL MÓDULO I Y II DE EDUCACIÓN Y SOCIEDAD.docx
PRÁCTICAS DEL MÓDULO I Y II DE EDUCACIÓN Y SOCIEDAD.docxPRÁCTICAS DEL MÓDULO I Y II DE EDUCACIÓN Y SOCIEDAD.docx
PRÁCTICAS DEL MÓDULO I Y II DE EDUCACIÓN Y SOCIEDAD.docx
 
Inteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdfInteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdf
 
Posnarrativas en la era de la IA generativa
Posnarrativas en la era de la IA generativaPosnarrativas en la era de la IA generativa
Posnarrativas en la era de la IA generativa
 
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
 
HIGADO Y TRAUMA HEPATICO UDABOL 2024 (3).pdf
HIGADO  Y TRAUMA HEPATICO UDABOL 2024 (3).pdfHIGADO  Y TRAUMA HEPATICO UDABOL 2024 (3).pdf
HIGADO Y TRAUMA HEPATICO UDABOL 2024 (3).pdf
 
3°ð_¦_â_¾ï¸_S34 PLAN DARUKEL DIDÃ_CTICA 23-24.docx
3°ð_¦_â_¾ï¸_S34 PLAN DARUKEL DIDÃ_CTICA 23-24.docx3°ð_¦_â_¾ï¸_S34 PLAN DARUKEL DIDÃ_CTICA 23-24.docx
3°ð_¦_â_¾ï¸_S34 PLAN DARUKEL DIDÃ_CTICA 23-24.docx
 
Diagrama de flujo - ingenieria de sistemas 5to semestre
Diagrama de flujo - ingenieria de sistemas 5to semestreDiagrama de flujo - ingenieria de sistemas 5to semestre
Diagrama de flujo - ingenieria de sistemas 5to semestre
 
Desarrollo de Habilidades de Pensamiento.
Desarrollo de Habilidades de Pensamiento.Desarrollo de Habilidades de Pensamiento.
Desarrollo de Habilidades de Pensamiento.
 
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
 
Desarrollo de Habilidades de Pensamiento.docx (3).pdf
Desarrollo de Habilidades de Pensamiento.docx (3).pdfDesarrollo de Habilidades de Pensamiento.docx (3).pdf
Desarrollo de Habilidades de Pensamiento.docx (3).pdf
 
leidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptxleidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptx
 
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdfTrabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
 
Sistemas distribuidos de redes de computadores en un entorno virtual de apren...
Sistemas distribuidos de redes de computadores en un entorno virtual de apren...Sistemas distribuidos de redes de computadores en un entorno virtual de apren...
Sistemas distribuidos de redes de computadores en un entorno virtual de apren...
 
proyecto invernadero desde el departamento de tecnología para Erasmus
proyecto invernadero desde el departamento de tecnología para Erasmusproyecto invernadero desde el departamento de tecnología para Erasmus
proyecto invernadero desde el departamento de tecnología para Erasmus
 
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdfTrabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
 
Robótica educativa para la eduacion primaria .pptx
Robótica educativa para la eduacion primaria .pptxRobótica educativa para la eduacion primaria .pptx
Robótica educativa para la eduacion primaria .pptx
 
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
 
EduFlex, una educación accesible para quienes no entienden en clases
EduFlex, una educación accesible para quienes no entienden en clasesEduFlex, una educación accesible para quienes no entienden en clases
EduFlex, una educación accesible para quienes no entienden en clases
 
3Redu: Responsabilidad, Resiliencia y Respeto
3Redu: Responsabilidad, Resiliencia y Respeto3Redu: Responsabilidad, Resiliencia y Respeto
3Redu: Responsabilidad, Resiliencia y Respeto
 

Javascript - Módulo 8: LocalStorage, iFrames, Origin policy y JSON

  • 1. © Juan Quemada, DIT, UPM Ejemplo de un Cronómetro 1 Juan Quemada, DIT, UPM
  • 2. © Juan Quemada, DIT, UPM Cronómetro WebApp similar a un cronómetro digital Cuenta décimas de segundo (100 miliseg.) n El contador se inicializa con 0,0 segundos w n.toFixed(1) formatea con 1 decimal Tiene 2 botones n arrancar/parar: arranca o para la cuenta w a partir del valor en que quedo n arranca si cronómetro parado n para si cronómetro contando n inicializar: pone el contador a 0,0 La libreria zepto.js utilizada en los temas siguientes equivale a jQuery 2.0 n Los ejemplos pueden sustituir zepto por jQuery y funcionarán igual w http://zeptojs.com/ 2 Juan Quemada, DIT, UPM
  • 3. © Juan Quemada, DIT, UPM Cronómetro 3 Juan Quemada, DIT, UPM
  • 4. © Juan Quemada, DIT, UPM DOM como almacén de datos El navegador guarda en document la página HTML que está mostrando n document es un objeto JavaScript con propiedades w que contienen todos los elementos de la página Las propiedades DOM son variables: src, value, innerHTML, .... n donde la información se puede guardar y recuperar w DOM solo contiene strings y todo debe convertirse a/de string Los elementos de DOM se pueden utilizar como variables n Hemos utilizado el elemento <span id="crono"> w para almacenar el contador de decimas de segundo 4 Juan Quemada, DIT, UPM
  • 5. © Juan Quemada, DIT, UPM Memoria local en HTML5 5 Juan Quemada, DIT, UPM
  • 6. © Juan Quemada, DIT, UPM HTML5 implementa nuevos tipos de almacenamiento de variables n Sencillas y eficientes de utilizar desde Javascript w Definición: http://dev.w3.org/html5/webstorage/ Variables locales n los datos se guardan permanentemente, hasta que se borran Variables de sesión n Los datos solo se guardan solo durante la sesión w Comienzo de sesión: apertura de navegador o pestaña w Final de sesión: cierre de navegador o pestaña Almacenamiento de datos en cliente 6 Juan Quemada, DIT, UPM
  • 7. © Juan Quemada, DIT, UPM Son propiedades de los objetos localStorage y sessionStorage n solo pueden contener strings, como por ejemplo w localStorage.usuario = “Pedro Pérez”; w sessionStorage.apellido = “Pérez”; Las variables locales están asociadas a protocolo, dominio y puerto n un programa solo puede acceder a propiedades de local/sessionStorage w creadas por otros programas cargados del mismo servidor Same origin policy n Seguridad: un programa solo confia en programas del mismo servidor n Modularidad: cada servidor tiene un espacio de nombres diferente Variables locales y de sesión 7 Juan Quemada, DIT, UPM
  • 8. © Juan Quemada, DIT, UPM Cada usuario que acceda a esta página tendrá una cuenta diferente n La variable está en su navegador Ejemplo de localStorage 8 Juan Quemada, DIT, UPM
  • 9. © Juan Quemada, DIT, UPM Cronómetro con memoria Nueva versión del cronómetro con localStorage n así mantiene la cuenta de décimas de segundos w entre usos sucesivos de la aplicación El cronómetro utiliza ahora la variable n localStorage.c w para guardar la cuenta de segundos Debemos inicializar localStorage.c n con parámetro por defecto para cuando se ejecute por primera vez Como la información se guarda ahora en localStorage y no en DOM n hay que actualizar primero localStorage y luego mostrar en DOM 9 Juan Quemada, DIT, UPM
  • 10. © Juan Quemada, DIT, UPM Cronómetro: localStorage 10 Juan Quemada, DIT, UPM
  • 11. JavaScript y HTML5: iframes y origin policy 11 © Juan Quemada, DIT, UPM
  • 12. © Juan Quemada, DIT, UPM iFrame n Importa un recurso Web w en un marco de navegación independiente Un iFrame crea una caja de arena segura n donde poder importar objetos externos Ejemplo: enlaza un juego en otro servidor n El iFrame evita que se introduzcan virus w Acceso JavaScript limitado a caja de arena iFrame 12 Juan Quemada, DIT, UPM
  • 13. La seguridad se controla en las aplicaciones JavaScript n Permitiendo que un programa JavaScript en un iframe solo acceda w Al árbol DOM de la página principal si proviene del mismo origen n Esto evita en el ejemplo anterior que el juego w robe o modifique información o datos del usuario en la página externa Origen n protocolo, servidor y puerto del URL La restricción de pertenecer al “mismo origen” n Solo afecta al recurso principal: página Web, recurso, … w Los scripts o los estilos no están afectados y pueden venir de otro servidor Así es posible hacer “mash-ups” seguros n de contenidos que no estén en nuestra cadena de confianza © Juan Quemada, DIT, UPM Seguridad Web: “Same Origin Policy” 13 Juan Quemada, DIT, UPM
  • 14. Ejemplo con iFrames 14 © Juan Quemada, DIT, UPMJuan Quemada, DIT, UPM
  • 15. Flexbox 15 © Juan Quemada, DIT, UPMJuan Quemada, DIT, UPM© Juan Quemada, DIT, UPMJuan Quemada, DIT, UPM Flexbox permite un diseño responsivo fácil y flexible: display: flex; flex-wrap: wrap; coloca cada iframe a la derecha del anterior. Al llegar al limite pasa a la línea siguiente.
  • 16. Código 16 © Juan Quemada, DIT, UPMJuan Quemada, DIT, UPM
  • 17. © Juan Quemada, DIT, UPM JSON: JavaScript Object Notation 17 Juan Quemada, DIT, UPM
  • 18. JSON: formato textual de representación de tipos y objetos JavaScript n http://json.org/json-es.html Un objeto JavaScript se transforma a un string JSON con n JSON.stringify(object) Un string JSON se transforma en el objeto original con n JSON.parse(string_JSON) © Juan Quemada, DIT, UPM JSON var x = {a:1, b:{y:[false, null, ""]}}, y, z; y = JSON.stringify(x); => '{"a":1, "b":{"y":[false, null, ""]}}' z = JSON.parse(y); => {a:1, b:{y:[false, null, ""]}} 18 Juan Quemada, DIT, UPM
  • 19. © Juan Quemada, DIT, UPM Serialización: n transformación reversible de un tipo u objeto (en memoria) en un string equivalente La serialización es un formato de intercambio de datos n Almacenar datos en un fichero n Enviar datos a través de una línea de comunicación n Paso de parámetros en interfaces REST En JavaScript se realiza desde ECMAScript 5 con n JSON.stringify(...) y JSON.parse(...) Otros formatos de serialización: XML, HTML, XDR(C), ... n Estos formatos están siendo desplazados por JSON, incluso XML w Hay bibliotecas de JSON para los lenguajes más importantes Serialización de datos 19 Juan Quemada, DIT, UPM
  • 20. JSON puede serializar n objetos, arrays, strings, números finitos, true, false y null w NaN, Infinity y -Infinity se serializan a null w Objetos Date se serializan a formato ISO n la reconstrucción devuelve un string y no el objeto original n No se puede serializar w Funciones, RegExp, errores, undefined Admite filtros para los elementos no soportados n ver doc de APIs JavaScript © Juan Quemada, DIT, UPM Características de JSON JSON.stringify(new Date()) => '"2013-08-08T17:13:10.751Z"' JSON.stringify(NaN) => 'null' JSON.stringify(Infinity) => 'null' 20 Juan Quemada, DIT, UPM
  • 21. JSON en ejemplo con iframes, array y for 21 © Juan Quemada, DIT, UPMJuan Quemada, DIT, UPM Si queremos almacenar en el navegador el array de urls para que no se pierdan los urls introducidos, hay que guardarlo serializado con JSON en localStorage
  • 22. © Juan Quemada, DIT, UPM Final del tema Muchas gracias! 22 Juan Quemada, DIT, UPM