HTML 5. LI385 - Nouvelles Technologies de Web



Documents pareils
Géolocalisation. Remy Sharp

Formation : WEbMaster

TP JAVASCRIPT OMI4 TP5 SRC

Initiation aux techniques du Web. Cours L2 sciences cognitives séance 2 Charif HAYDAR: alchiekc@loria.fr

NFA016 : Introduction. Pour naviguer sur le Web, il faut : Naviguer: dialoguer avec un serveur web

LES GRANDES ETAPES DE CREATION D UN WEB DESIGN

Programmation Internet Cours 4

Devenez un véritable développeur web en 3 mois!

CHAPITRE 11. Temps réel Remy Sharp

HTML, CSS, JS et CGI. Elanore Elessar Dimar

Les grandes facettes du développement Web Nicolas Thouvenin - Stéphane Gully

Présentation du Framework BootstrapTwitter

Langage HTML (2 partie) <HyperText Markup Language> <tv>lt La Salle Avignon BTS IRIS</tv>

Programmation Web. Madalina Croitoru IUT Montpellier

Extended communication server 4.1 : VoIP SIP service- Administration

Firefox pour Android. Guide de l utilisateur. press-fr@mozilla.com

Principales failles de sécurité des applications Web Principes, parades et bonnes pratiques de développement

Démonstration de la mise en cache via HTML 5 sur iphone

Dans nos locaux au 98 Route de Sauve NÎMES. Un ordinateur PC par stagiaire, scanner, imprimante/copieur laser couleur

INTERNET est un RESEAU D ORDINATEURS RELIES ENTRE EUX A L ECHELLE PLANETAIRE. Internet : interconnexion de réseaux (anglais : net = réseau)

Formation. Module WEB 4.1. Support de cours

RAPPORT AUDIT SEO. Élaboré à l'attention de : Monsieur Greber Élaboré par : Cédric Peinado

KompoZer. Composition du site : _ une page d'accueil : index.html. _ une page pour la théorie : theorie.html. _ une page pour les photos : photos.

Optimiser pour les appareils mobiles

Magento. Magento. Réussir son site e-commerce. Réussir son site e-commerce BLANCHARD. Préface de Sébastien L e p e r s

SYSTÈMES D INFORMATIONS

STID 2ème année : TP Web/PHP

les techniques d'extraction, les formulaires et intégration dans un site WEB

Logiciels de référencement

Mysql avec EasyPhp. 1 er mars 2006

Mozilla Firefox 3.5. Google Chrome 3.0 LES NAVIGATEURS WEB. (pour Windows) Opéra 10. Internet Explorer 8. Safari 4.0

La balise object incorporer du contenu en HTML valide strict

LANGAGUE JAVA. Public Développeurs souhaitant étendre leur panel de langages de programmation

Point sur les solutions de développement d apps pour les périphériques mobiles

Veille technologique

Echosgraphik. Ce document sert uniquement à vous donner une vision sur ma manière de travailler et d appréhender un projet

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp

Nouveautés joomla 3 1/14

Sécurité des sites Web Pas un cours un recueil du net. INF340 Jean-François Berdjugin

CONFÉRENCE WEB 2.0. UPDATE ASBL Michaël Barchy 23 janvier 2013

WEB & DÉVELOPPEMENT LES BASES DU WEB LE LANGAGE HTML FEUILLES DE STYLES CSS HISTORIQUE D INTERNET ET DU WEB LES DIFFÉRENTS LANGAGES

Activité sur Meteor. Annexe 1 : notion de client-serveur et notion de base de données

Failles XSS : Principes, Catégories Démonstrations, Contre mesures

Formation Webmaster : Création de site Web Initiation + Approfondissement

webmestre : conception de sites et administration de serveurs web 42 crédits Certificat professionnel CP09

Optimiser les performances d un site web. Nicolas Chevallier Camille Roux

S7 Le top 10 des raisons d utiliser PHP pour moderniser votre existant IBM i

Manuel d utilisation DeveryLoc

Service d Audio et Visioconférence

Édu-groupe - Version 4.3

3W Academy Programme de Formation Développeur Intégrateur web Total : 400 heures

Comment créer son propre monitoring. (Version simple PHP)

Module BD et sites WEB

HTML. Notions générales

Informations générales. Technologies. css3-html5-php-ajax-j-query-mootools-action-script3

Les sites Internet dynamiques. contact : Patrick VINCENT pvincent@erasme.org

Petite définition : Présentation :

Portabilité sur système Android d un système de borne d information

RESUME DE CARRIERE. Alice JULIENNE. 23 ans Nationalité Française Développeur Web Front-End. Compétences

Les outils de création de sites web

FileMaker Server 11. Publication Web personnalisée avec XML et XSLT

Tous les autres noms de produits ou appellations sont des marques déposées ou des noms commerciaux appartenant à leurs propriétaires respectifs.

Introduction à. Oracle Application Express

CREATION d UN SITE WEB (INTRODUCTION)

Manuel de Documents. Introduction Format des fichiers lus Fonctions supplémentaires Copier et partager des fichiers...

Formation Site Web. Menu du jour. Le web comment ça marche? Créer un site web Une solution proposée pour débuter La suite?

Développement d'applications Web HTML5 L'art et la manière avec Visual Studio 2015 et TFS

CARPE. Documentation Informatique S E T R A. Version Août CARPE (Documentation Informatique) 1

1. Base de données SQLite

Mobilité Comment Drupal peut-il nous aider? Jean-Baptiste Guerraz - jbguerraz@gmail.com

Panel des technologies Web

et Groupe Eyrolles, 2006, ISBN :

Webmail Manuel d utilisation

Le stockage local de données en HTML5

.ARCHITECTURE ET FONCTIONNEMENT

{less} Guide de démarrage

Preliminary Spec Sheet

Formulaire pour envoyer un mail

Module Com231A - Web et Bases de Données Notion 5 : Formulaires et utilisation des Bases de Données avec PHP

Sommaire. -1-Computer en bref. Web en bref. Le web 3.0,...la mobilité. Evolution du Web web1.0, web2.0, web2.b, web3.0...

WINDEV MOBILE. ios SMARTPHONE SUPPORT: IOS, ANDROID, WINDOWS PHONE 8.

Authentification à deux facteurs Cryptage portable gratuit des lecteurs USB Cryptage du disque dur

Scopia Desktop. Sommaire

Optimiser les s marketing Les points essentiels

Sommaire : Pourquoi créer un site web? Qu est-ce qu un site Web? Les différents types de sites. Quelles solutions peuvent être employées?

Manuel d'installation

Projet 2. Gestion des services enseignants CENTRE D ENSEIGNEMENT ET DE RECHERCHE EN INFORMATIQUE. G r o u p e :

FileMaker Server 12. publication Web personnalisée avec XML

TIC. Réseau informatique. Historique - 1. Historique - 2. TC - IUT Montpellier Internet et le Web

MEMENTO D'UTILISATION Du T.N.I. SmartBoard (Version )

WysiUpStudio. CMS professionnel. pour la création et la maintenance évolutive de sites et applications Internet V. 6.x

FileMaker Server 14. Aide FileMaker Server

Androïd Manuel d installation MB PRO LIGHT Préalable. Définitions

BES WEBDEVELOPER ACTIVITÉ RÔLE

PHP et les Bases de données - Généralités

Transcription:

HTML 5 LI385 - Nouvelles Technologies de Web

HTML5 Evolution (compatible) de HTML4 Les balises HTML4 restent valables en HTML5 Quelques notions obsolètes Nouvelles fonctionnalités : Du langage HTML (balises, formulaires) De Javascript De CSS Compatibilité : http://caniuse.com/

Plan Nouvelles balises sémantique/multimédia Formulaires Nouvelles APIs Javascript

CODE LIGHT ET NOUVELLES BALISES

Simplification du code <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" > <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <link rel="stylesheet" type="text/css" href="design.css" /> <script type= text/javascript src=script.js"></script> </head> <!DOCTYPE html> <html lang="fr"> <head> <meta charset="utf-8" /> <link rel="stylesheet" href="design.css" /> <script src="script.js"></script> </head>

Nouvelles balises Pourquoi <div id="xxx" /> ne suffit pas? Balises sémantiques : <header> : en-tête <footer> : pied-de-page <nav> : navigation, type menu <aside> : zone secondaire non liée au contenu principal de la page <article> : portion de la page qui garde un sens même séparée de l ensemble de la page (comme un article de blog par exemple) <figure> : une illustration, par exemple image+légende+

Structure globale

Barres de progrès Meter : Représentation d'une valeur dans un intervalle La couleur dépend de la valeur <meter min="0" max="100" low="40" high="90" optimum="100" value="41">pas mal</meter> Progress : Représente quelque chose en train d'augmenter <progress value="75" max="100">3/4</progress>

Balises multimédia Audio : Lecture de fichiers audio MP3, Ogg, Wav Video : Lecture de fichiers vidéo MP4, Ogg, WebM Canvas : Dessin Éventuellement prévoir des fallbacks (flash)

Balises audio/video Attributs audio : autoplay controls loop muted preload src Attributs video supplémentaires : height, width poster Événements associables : onpause, onvolumechange, onseeking, http://www.w3schools.com/tags/ref_eventattributes.asp

FORMULAIRES

Nouveaux champs search : champ de recherche email : un ou plusieurs email url tel : pas de validation particulière datetime : date : champ de choix de date month week time datetime-local number range : choix d'un nombre color : color picker keygen : génération de clé publique

Nouveaux attributs Autocomplete : formulaire ou champ Propose l'autocompletion <input type="text" id="name" autocomplete="on" /> Novalidate : formulaire La validité du champ n'est pas vérifiée. <form action="" novalidate> Autofocus : champ Donne le focus par défaut à l'unique champ de ce type <input type="email" id="email2" autofocus> Required : champ Champ obligatoire <input type="email" id="email" required>

Nouveaux attributs Placeholder : input Champ prérempli mais avec contenu qui disparait <input type="email" placeholder=mail@domain.com Readonly : input Multiple : input Renseigner plusieurs valeurs (pas que pour un select)

Datalist Champ texte avec valeurs déroulantes prédéfinies Possibilité de taper autre chose <input list="students"/> <datalist id="students"> <option value="laurent"/> <option value="marc"/> <option value="maurice"/> </datalist>

Soumissions spécifiques Création de plusieurs boutons avec des comportement différents : formaction formmethod formnovalidate formtarget <input type="submit" value="submit"> <input type="submit" formaction="admin.php" value="admin submit">

API JAVASCRIPT

API Javascript Nouvelles fonctionnalités nécessitant du javascript : Stockage de données Web sockets Geo-localisation Autres

API JAVASCRIPT WEB STORAGE

storage Stockage local persistant de données : http://www.w3.org/tr/webstorage/ Similaire aux cookies, mais : Pas envoyé dans l'entête HTTP Limite de taille beaucoup plus élevée (5Mo dans la norme) Concurrence et vie privée gérées par le navigateur Plusieurs versions : sessionstorage localstorage Base de données (WebSQL, IndexedDB)

storage Storage = liste d'éléments stockés via une clé Interface générique : getitem(key) setitem(key,value) removeitem(key) clear() length : nombre d'éléments stockés key(n) : accès par indice

localstorage / sessionstorage localstorage : Données non supprimées même après fermeture du navigateur Similaire aux cookies dans l'esprit Slots : localstorage localstorage.setitem(key, value) localstorage.getitem(key) sessionstorage : Idem mais conservation moins garantie

Modification du stockage Événement storage : Appelé en cas de changement du storage Dans une autre fenêtre window.addeventlistener('storage', function(event){}); Propriétés accessibles de event : storagearea : objet storage modifié key : clé modifiée oldvalue, newvalue url : adresse du document modifié

IndexedDB et WebSQL Stockage local sous forme de base de données Pour quoi faire? IndexedDB : Stockage hiérarchique clés/valeurs, proche de NoSQL W3C : "A query language can be layered on this API" WebSQL = sqlite : SQL classique avec quelques limitations Pas dispo sur tous les navigateurs

WebSQL - exemple var db; if(window.opendatabase){ db = opendatabase('ma_base', '1.0', 'database', 2000000); db.transaction(function(tx) { tx.executesql("create TABLE Test (id REAL UNIQUE, text TEXT)"); }); } db.transaction(function(tx) { tx.executesql( 'INSERT INTO Test (id, text) VALUES (?,?)', [1, "test"] ); });

Dernière solution Mode hors ligne Navigation Sauvegarde Synchro dès qu'on revient en ligne Cf manifest

API JAVASCRIPT GEOLOCALISATION

Principe API de localisation du navigateur : http://www.w3.org/tr/geolocation-api/ Via l'objet : navigator.geolocation Selon le terminal et le mode de connexion, on utilise : GPS interne Adresse IP ou MAC, RFID Borne 2G/3G L'utilisateur est prévenu et doit accepter la geo-localisation

Méthodes Déterminer la position actuelle : Calcule la position actuelle puis appelle le callback void getcurrentposition(fun_ok, fun_ko, options) fun_ko et options ne sont pas obligatoires Suivre la position : watchposition(fun_ok, fun_ko, options) fun_ko et options ne sont pas obligatoires clearposition(id)

getcurrentposition getcurrentposition(function_ok, function_ko, options) function_ok(position) {} position.coords : latitude, longitude, altitude et heading accuracy et altitudeaccuracy speed, timestamp position.timestamp

getcurrentposition getcurrentposition(function_ok, function_ko, options) function_ko(error) {} error.code : PERMISSION_DENIED=1, POSITION_UNAVAILABLE=2, TIMEOUT=3 error.message Options : enablehighaccuracy : chercher la meilleure position (lent, couteux) timeout : temps maximum avant appel du callback de succès maximumage : utilisation d'une position stockée en cache

watchposition long watchposition(fun_ok, fun_ko, options) Retourne un identifiant de suivi clearposition(id) Annule le suivi de l'identifiant associé Premier appel à watchposition : Retourne un identifiant Exécute la recherche de manière asynchrone Appelle le callback à chaque changement de position (?)

API JAVASCRIPT WEBSOCKETS

Objectif Établir une connexion client serveur persistante : Exemple : chat avec mises à jour automatiques chez tous les clients

Objectif Établir une connexion client serveur persistante : Exemple : chat avec mises à jour automatiques chez tous les clients Solution : créer une connexion "persistante" en Ajax Établissement périodique d'une connexion (Ajax polling) Si données nouvelles : traitement Sinon : (attente puis) création d'une nouvelle connexion Couteux pour le serveur, le réseau Rafraichir en fonction du besoin (temps réel, monitoring)

API websocket Ouverture et maintien de connexion ouverte http://www.w3.org/tr/websockets/ Norme pour le protocole de communication (TCP full duplex) Prévoir un fallback si API non disponible : Ajax polling Flash Création : var ws = new Websocket(url, [protocoles]); Les protocoles sont optionnels

Création et événements Envoi de message : ws.send(message); Callbacks ws.onopen = function(evt) { } : Ouverture de la connexion ws.onmessage = function(evt) { } : Appelé à chaque réception de message ws.onerror = function(evt) { } : Traitement des erreurs ws.onclose = function(evt) { } : Fermeture de la connexion

Coté serveur Nécessite un serveur qui comprenne le protocole Des implémentations en : C/C++ Erlang Java.NET Framework Node.js Perl PHP Python Ruby Voir la page wikipedia websocket pour une liste exhaustive

API Server-sent events Uniquement serveur vers client : Correspond à la moitié seulement des websockets! Utilise HTTP donc pas besoin de serveur spécifique Création et événements var source = new EventSource('updates.cgi'); source.onmessage = function (e) {alert(e.data); }; source.onopen = function (e) {alert(e.data); }; source.onerror = function (e) {alert(e.data); };

API JAVASCRIPT QUELQUES AUTRES

Notifications Emettre des alertes pour l'utilisateur : http://www.w3.org/tr/notifications/ Pas la version implémentée dans Chrome Quasiment pas utilisable dans les autres navigateurs pour l'instant Proche des alert mais moins intrusif La demande d'autorisation de notification doit venir de l'utilisateur window.webkitnotifications.requestpermission() Création et affichage (version Chrome) : notif = window.webkitnotifications.createnotification('icone', 'Titre', 'Contenu') notif.ondisplay=function(){} notif.notif.onclose=function() {} notif.show(); notif.cancel();

Selector Permet de récupérer des éléments de la page : http://www.w3.org/tr/selectors-api/ Similaire à $(" ") en jquery Mais moins générique et moins simple à traiter ensuite document.queryselector() : Retourne le premier élément vérifiant la sélection document.queryselectorall() Retourne tous les éléments vérifiant la sélection Sélection : norme CSS3 document.queryselector("#bar, #foo");

Page visibility Permet de savoir si la page est visible http://www.w3.org/tr/page-visibility/ Objet document : document.hidden : statut visible ou caché visibilitychange : événement de changement document.visibilitystate : hidden, visible, prerender, unloaded Avant la norme : Mozilla : mozhidden, mozvisibilitychange IE : mshidden, msvisibilitychange Chrome : webkithidden, webkitvisibilitychange

Drag and drop Glisser-déposer pour des objets http://www.w3.org/tr/html5/ Similaire à jquery Élément déplaçable : Attribut draggable="true" Évenement drag Zone d'accueil : Événements dragover et drop Drag data store : Stockage et gestion de l'objet déplacé

Autres UserMedia : accès aux périphériques locaux Webcam, micro http://www.w3.org/tr/mediacapture-streams/ Web workers : Création de threads (vrais thread OS) Le code du worker se trouve dans un fichier js distinct var myworker = new Worker("worker_src.js"); myworker.onmessage = function (oevent) { console.log("message from the worker"); };

API JAVASCRIPT CANVAS

Canvas Balise spécifique pour dessiner en javascript : Nombreuses fonctionnalités classiques Rectangle, cercle, lignes, dégradés, insertion texte et d'image Fonctionnalités avancés : Moteur 3D : webgl http://bruno-simon.com/src/normal/img/articles/three-js/webgl- 2.html Plus d'infos la semaine prochaine Voir aussi : Création de SVG (balise svg)

Canvas - exemple var canvas = document.getelementbyid("canvas") var ctx = canvas.getcontext('2d'); // rectangle direct ctx.fillstyle="grey"; ctx.fillrect(0,0,50,50); ctx.strokestyle="black"; ctx.strokerect(0,0,50,50); // rectangle avec chemin ctx.beginpath(); ctx.rect(50, 50, 50, 50); ctx.fillstyle = 'yellow'; ctx.fill();