Est-ce que nous pouvons utiliser HTML 5 aujourd’hui et que ça marche sur tous les navigateurs modernes ?

Pas tout-à-fait, mais c’est possible en partie, en théorie. Commençons par les nouveaux élément de structure (section, aside, article)

Opera et Safari n’ont pas de problèmes à styler les nouveaux éléments HTML 5. Donc on peut utiliser les section, aside et ainsi de suite avec ces navigateurs.

Internet Explorer, évidemment, ne peux pas. Même pas IE7. Mais il y a un hack, qui nécessite malheureusement javascript. Il suffit de créer un élément DOM avec le nom de la balise utilisé pour que notre style fonctionne. Ex: document.createElement(« aside »);

Le plus gros problème cette fois vient de Firefox. Pour Firefox, tous les éléments non reconnus sont considérés comme inline (comme span). L’analyseur syntaxique ne permet pas de mettre un élément block (comme p ou div) à l’intérieur d’un élément inline, il pense que c’est une erreur alors il va fermer la balise.

Quelque chose comme section, p, texte, /p, /section, va devenir de façon interne à Firefox section, /section, p, texte, /p, section, /section, pas vraiment ce que l’on veut.

Tant que l’analyseur syntaxique de Firefox ne sera pas corrigé, impossible d’utiliser HTML5 de façon intéressante sur le Web. J’espère que ce sera réglé d’ici Firefox 3, mais c’est loin d’être certain. C’est sûr que je vais être très déçu de Mozilla (genre assez pour changer de navigateur) s’ils ne règlent pas ce bogue d’ici Firefox 3.

Qu’en est-il de XHTML5 ? Lui n’aura pas le problème d’analyseur syntaxique, la balise ne sera pas fermée, mais elle sera toujours inline. Il faudra donc spécifier que section est block dans le CSS. Pas trop difficile.

Donc, en théorie (parce que je vous averti que je ne l’ai pas testé) pour faire du HTML 5 maintenant il faut :

  1. Coder comme si c’était du XHTML5 (donc, sans noscript, sans entités autres que celles de XML, mais avec UTF8 pour les accents), mais sans autre namespace que HTML
  2. Lors de l’envoi du HTML par le serveur, quand c’est Internet Explorer, enlever la déclaration XML, ajouter le DOCTYPE et les namespace du HTML et envoyer le tout en text/html. IE va l’analyser comme de la soupe de balise (mais entre vous et moi, qui analyse autre chose que de la soupe de balise).
  3. Pour les autres, envoyer la version XML telle qu’elle. On peut aussi opter d’envoyer la version XML seulement à Firefox puisqu’il est généralement conseillé d’utiliser la sérialisation HTML5 (ça va faire plaisir à ceux qui pensent que XHTML ça ne sert pas à grand chose, faut bien leur donner leur nanane ;-) )

Voilà, je vous tiens au courant quand je l’aurai testé. Cherchez un peu sur le Web, je suis sûr que d’autres vont essayer cela bientôt.

Je vous ai tu dis que <br/> avec le trailing slash est correct en HTML5 ? Ça nous sauve pas mal dans notre cas. Voilà un bon coup pour le HTML5, ce sera facile de migrer notre XHTML 1 sans perdre de lisibilité.

Laisser un commentaire