API HTML5

Alexandre Niveau
GREYC — Université de Caen
Adapté du cours de Jean-Marc Lecarpentier

HTML5

On a vu que le DOM est une interface permettant à un programme d'interagir dynamiquement avec les éléments d'un document HTML

Les pages modernes ne sont plus toujours de simples documents textuels mais peuvent être de véritables applications

modifier les éléments n'est pas la seule chose que l'on a besoin de faire (manipulation de documents multimédia, de primitives de dessin, etc.)

Il est nécessaire d'avoir des API pour faire ça (et de nombreuses autres choses)

elles sont fournies par la norme HTML5

La norme HTML5 ne décrit pas qu'un langage de balisage, mais également toutes les façons dont on peut interagir avec la page et le navigateur

Ce cours contient une vue d'ensemble des API importantes ou pratiques, pour les détails il faudra aller fouiller par vous-mêmes

NB : si une démo ne marche pas, essayer avec un autre navigateur

Multimédia

  • Audio : élément audio
  • Vidéo : élément video
  • Désaccords sur les codecs à utiliser…

    possibilité de mettre plusieurs fichiers alternatifs

  • Le navigateur affiche ses propres contrôles, mais il est possible de créer les siens
  • API de contrôle, événements DOM (play, pause, end)…
  • Gestion des sous-titres

Canvas

  • Élément pour contenir des dessins ou images
  • Couplé à JavaScript
  • Exemple (source) :
  • Démos vidéo + canevas : miroir, filtre couleur

Interactions utilisateur

Historique de navigation

  • Bouton « retour » très utilisé par les internautes
  • Malheureusement souvent cassé par les applications utilisant Ajax
  • API History : permet d'ajouter/enlever des entrées dans l'historique de l'utilisateur
  • Peut aussi modifier l'URL dans la barre d'adresse
  • démo
  • API History
Meilleure solution : ne pas utiliser Ajax à tort et à travers

si votre architecture nécessite de réimplementer toutes les fonctionnalités de base du navigateur, c'est très mauvais signe…

Navigation offline

  • Utilisation d'un manifest pour spécifier les fichiers dont la page a besoin pour fonctionner hors ligne
  • Associé à une API JavaScript pour détecter le passage en ligne/hors ligne et pour lire/écrire dans le cache
  • API Offline de HTML5
semble en cours d'obsolescence, il faut utiliser des service workers à la place

Autres API associées à HTML5

D'autres API faisaient originellement partie de la norme HTML5, mais en sont sorties

Chacune a maintenant sa propre norme
  • Stockage de donnée sur le client (en mode simple ou SQL)
  • Géolocalisation
  • Microdata

Stockage de données client

  • Objectif : pallier les défauts des cookies
  • Les sites peuvent stocker des données chez le client, sans avoir besoin de passer par le serveur
  • Deux types de stockage
    • sessionStorage : pour stocker des données propres à une fenêtre (ou onglet), donc spécifiques à une navigation
    • localStorage : pour stocker des données sur le client, indépendamment des fenêtres. Données conservées même lorsque le client est fermé.
  • Exemples
  • Recommendation Web Storage

Stockage SQL client

  • Avoir une base de données dans le navigateur
  • Web SQL Database dans une impasse, a été abandonné
  • La solution retenue n'est pas du SQL mais une base de données indexée : Indexed Database API

Géolocalisation

Web sémantique

  • Web sémantique avant HTML5 :
    • Microformats (simples mais avec des limites)
    • RDFa avec XHTML (pas simple)
  • Microdata : avoir un mécanisme simple pour ajouter des données sémantiques dans les pages
  • Tuto par Google
  • Recommendation HTML Microdata
  • HTML+RDFa 1.1 pour mettre du RDFa dans le HTML
  • Utilisation de profils

Travaux en cours au W3C

Conclusion

  • Beaucoup de fonctionnalités, en standard
  • Implémentations qui avancent
  • Beaucoup de travail pour rester à la pointe !