Pour les injecter les balises HTML5 dans le DOM et leur appliquer la propriété CSS display: block pour les styler, Remy Sharp a mis au point html5shiv qui est toutefois sans effet lorsque les balises HTML5 sont affichées via innerHTML. Heureusement, HTML5 innerShiv est là pour que les version 6 à 8 d’Internet Explorer tiennent compte des nouvelles balises HTML5 créées à la volée.
Helper CSS
Je découvre que le innerHTML fait son apparition dans la spéc HTML 5. C’est bien dommage, c’est plutôt le genre de truc que l’on aimerait voir disparaître.
La solution proposé est finalement pire que le « mal »
truffo — Peux-tu éclairer ma lanterne sur le côté obscur de innerHTML ? Parce que je pensais naïvement que c’était plutôt une bonne nouvelle pour les développeurs qui l’utilisait.
@truffo : pour le moment on n’a pas trouvé plus rapide en manipulation DOM que .innerHTML, donc je pense qu’on peut être bien content que ça existe.
.innerHTML est considéré par les puristes du DOM comme une hérésie car on n’utilise pas les méthodes standards pour créer et modifier des éléments et que beaucoup faisaient du code spaghetti illisible avec. Un peu comme lorsque l’on mélange PHP et HTML dans le même fichier parce qu’on n’utilise pas de système de templating
Mais bien utilisé avec un système de template JS (et depuis peu jQuery en a un, donc ça va se démocratiser), ça ne me pose vraiment pas de cas de conscience de créer dynamiquement des noeuds de cette manière
innerHTML pose des problèmes d’accessibilité, toutes les frameworks js ont fait l’effort de ne pas passer par ces méthode.
http://www.w3.org/WAI/GL/WCAG20/WD-WCAG20-SCRIPT-TECHS-20050211/#doc-write