12/04/2010

Les autres nouveautés de l’HTML 5

Géolocalisation

Très intéressant sur le web qui devient de plus en plus mobile aujourd’hui, l’HTML 5 intègre une API qui permet d’aisément obtenir les coordonnées géographiques du visisteur :

<script type="text/javascript">
function gotcha(position) {
    alert("Vous êtes à "+position.coords.latitude+", "+position.coords.longitude);
}
navigator.geolocation.getCurrentPosition(gotcha);
</script>

Normalement le navigateur demande à l’utilisateur l’autorisation d’envoyer sa position. Sur un iPhone par exemple, elle sera calculée grâce à la puce GPS. Sur un navigateur desktop, la méthode est variable (triangulation WiFi, puce GPS, services de localisation d’IP ou simplement demander l’adresse de l’utilisateur).

ContentEditable

(Attention, paragraphe très… personnel ^^) Alors là je suis fan de cette fonctionnalité : elle permet de rendre n’importe quelle partie d’une page éditable. On voyait ça apparaître de plus en plus dans les applications en ligne, et maintenant c’est standardisé et extrêmement facile à mettre en place. La preuve? Essayez de cliquer sur ce paragraphe !

Et en plus c’est du WYSIWYG ! Essayez Ctrl+B ou Ctrl+I (sous Chromium) ! Et voilà le code source qui m’a permis de faire ça :

<p contenteditable="true">Owi, édite-moi</p>

Je vois déjà toutes les possibilités ouvertes par une fonctionnalité si simple à mettre en place, comme par exemple corriger une erreur dans nos articles ou modifier une page de WikiPédia en deux clics.

Nouveaux inputs

Essentiellement dans le soucis de rendre le web encore plus accessible (aux handicapés) et aux système d’auto-remplissage, le HTML 5 intègre une dizaine de nouveaux types d’inputs textuels : tel, search, url, email, datetime, date, month, week, time, datetime-local, number et color. Les navigateurs sont supposés proposer une interface à l’utilisateur comme par exemple un calendrier pour remplir un datetime, mais ni Chromium ni Firefox ne semble s’y conformer pour l’instant.

On remarque aussi l’apparition de l’input range qui vient combler une déficience qui forçait souvent à avoir recours à une librairie JavaScript.

<input type="range" style="width: 100%;" min="0" max="50" />

Autres nouvelles balises

Le W3C introduit dans l’HTML 5 de nombreuses nouvelles balises, dont voici la liste exhaustive

  • section, article, aside, hgroup, header, footer, nav encadrent les principaux contenus d’une page web typique. On abandonne ainsi l’utilisation constante de, par exemple, <div id=”header”>
  • figure et son sous-élément figcaption permettent de lier une légende à une image ou une vidéo
  • embed a pour but de remplacer object lors de l’insertion de Flash ou de Java (dans les rares cas où ce sera nécessaire)
  • mark encadre un mot ou un texte important pour, par exemple, le surligner en CSS
  • progress est l’élément à privilégier si vous affichez la progression d’une tâche
  • meter représente une mesure telle que l’utilisation du disque
  • time représente une date et/ou une heure
  • ruby, rt, rp permet d’intégrer des annotations ruby (WTF?)
  • command représente une commande que l’utilisateur peut invoquer
  • details encadre un complément d’information ou des contrôles supplémentaires que l’utilisateur peut obtenir sur demande
  • keygen permet de fournir une clé de contrôle pour la vérification de la validité des données
  • output encadre une zone où un script affichera son résultat

La plupart de ces nouveaux éléments sont liés à l’accessibilité mais peuvent aussi présenter un avantage de lors de la création de scripts complexes.

Et nouveaux attributs

Je vouais ai déjà parlé de contentEditable mais il y a beaucoup d’autres nouveaux attributs standards en HTML 5.

  • contextmenu permet de lier un menu au clic droit sur un élément
  • draggable détermine si un élément peut être soumis au drag & drop. Cette fonctionnalité est malheureusement soumise à controverse à cause de sa complexité, c’est pourquoi je ne l’ai pas abordé dans l’article.
  • hidden est un boléen qui remplace sa fonction homonyme en style ou CSS. L’intérêt? Cacher les éléments même dans les navigateurs pour malvoyants qui n’interprètent pas les styles.
  • item et itemprop et subject permettent de regrouper des éléments
  • spellcheck est un boléen qui spécifie si la correction orthographique mérite d’être activée sur un élément

Finalement, vous pouvez lier n’importe quel attribut personnalisé (ce qui peut être pratique pour certains scripts) sans contredire les standards du W3C (et donc passer les tests des validateurs) à condition que cet attribut commence par data-.

  1. ckg
    | #1

    Beau tour d’horizon !

    Vivement que ça soit finalisé …

  2. | #2

    Article très intéressant, j’ai appris des choses.

  3. | #3

    Ah bah nickel, un beau résumé, je ne connaissais pas la moitié des nouveautés décrites ici :p

  4. | #4

    Moi j’ai salement hâte de pouvoir éditer wikipedia en “deux clics” avec le contenu éditable…

    Ça sera tellement plus facile 😀

  5. Eregon
    | #5

    ruby, rt, rp permet d’intégrer des annotations ruby (WTF?)
    “Ruby” are short runs of text alongside the base text, typically used in East Asian documents to indicate pronunciation or to provide a short annotation. This specification defines markup for ruby, in the form of an XHTML module.

    Tout à fait WTF, 3 balises pour à moitié rien (ou comment réinventer les tableaux au mieux)…

    Très bon article sinon 🙂

    P.S.:En postant le commentaire: Catchable fatal error: Object of class stdClass could not be converted to string in /home/geekfault/www/wp-content/plugins/multi-page-toolkit/TA_multi_toolkit.php on line 309

  6. | #6

    Très bon article, en effet, vu qu’on entend parler que de la vidéo concernant le html5.
    Merci.

  7. Xavier
    | #7

    Bon, cet article est sympa parce qu’il présente pas mal de choses intéressantes mais il est quand même approximatif et le recul manque.

    Par exemple, toute la partie local storage ne fait pas (plus) partie de HTML5 mais fait l’objet d’une spéc séparée.
    Pour le manque de recul, il est visible avec des affirmations comme “La plupart de ces nouveaux éléments sont liés à l’accessibilité”, et il y a des choix vraiment critiquables (bonjour microdata) et il suffit de suivre un peu l’évolution d’HTML5 et son processus de standardisation pour voir que tout n’est pas rose.

    Petit commentaire personnel pour finir : contenteditable est très sympa vu comme ça mais je ne suis pas vraiment convaincu. D’une part, c’est WYSIWYG (et je ne suis pas certain que ce mode d’édition soit toujours adapté) et d’autre part, les navigateurs font encore de la merde à ne pas laisser la main à un VRAI outil dédié. Bon, c’est comme ça pour le reste aussi, je ne suis pas d’accord avec le paradigme dominant, tant pis pour moi…

    Bonne continuation, malgré ce que j’ai pu dire, vos articles ne sont pas forcément mauvais.

  8. | #8

    @Xavier Merci de ces précisions. Même si j’ai passé plusieurs heures à me documenter, ce n’est pas toujours évident sur un standard encore à l’état de brouillon.

    Sinon pour le WYSIWYG du ContentEditable, si tu ne veux pas que ça le soit il faudra utiliser un textarea mais ça me semble normal que ça le soit puisqu’on peut rendre éditable n’importe quelle partie d’une page qui peut déjà avoir sa mise en page. Maintenant c’est sûr que si les navigateurs ne font que de la merde avec ça, on va devoir y mettre des surcouches JavaScript.

  9. | #9

    Merci pour ces explications ! Très intéressant… j’ai lâché HTML et CSS juste avant la vague HTML 5 donc je suis à la ramasse maintenant, cet article vient combler un peu mes déficits !

    Concernant l’élément ruby, vu que tu as l’air de ne pas trop comprendre de quoi il s’agit :
    http://en.wikipedia.org/wiki/Ruby_character

    Rien à voir avec le langage de programmation, il s’agit en fait d’un élément qui permet d’afficher, au-dessus d’un caractère asiatique (chinois, japonais) sa prononciation.

    Il me semble que cet élément figure déjà dans les versions précédents de HTML mais est mal interprété par les navigateurs malheureusement… j’espère que ça sera mieux avec HTML 5 !

  10. | #10

    Oui je savaiss de quoi il s’agit mais je ne saisis pas du tout l’utilité de trois tags HTML rien que pour ça. En même temps je ne parle aucun dialecte asiatique 😉

  11. | #11

    oui c’est utile sur tous les deux balises vidéo et audio

  1. | #1
  2. | #2
  3. | #3