[html5] L'attribut data-*

En HTML5 à été ajouté un attribut qui je pense sera (ou est déjà) très utile pour les développeurs. Je l’ai découvert il y a seulement 1 mois dans le cadre de l’un de mes projets professionnels. Pour que vous compreniez son intérêt, posons la problématique.

Jusqu’a maintenant, lorsque le développeur voulait stocker une information dans une balise html il avait deux attributs disponibles pour cette tache : l’attribut « id » et l’attribut « class ». Ces attributs remplissent très bien leur rôle mais l’on se retrouvait vite en manque de place.

Par exemple, si je veux que mon javascript réagisse spécifiquement en fonction du type, de la position, de la nature, etc :

<ul>  
    <li class="firstlevel"> 
        <ul> 
            <li class="secondlevel doc pdf sharedrep"></li>
        </ul> 
    </li>
</ul>  

Pas très lisible même si cet exemple reste très soft. Et si l’on revient sur son code trois mois après il faut d’abord retrouver à quoi toutes ses classes correspondent pour comprendre pleinement notre code.

L’attribut data-* : petite révolution du HTML5

Pour pallier à ce léger problème, le W3C à standardisé l’attribut data-*. Le principe est simple : lorsque vous cherchez un endroit où stocker une information nécessaire a votre javascript – ou autre – et que vous voudriez qualifier cette donnée, vous pouvez inventez un attribut data qui sera propre à votre code.

Cet attribut est totalement ignoré par les navigateurs, il n’y aura que votre code saura s’en servir.

Dans notre exemple cela ce traduirait ainsi :

<ul>  
    <li class="firstlevel"> 
        <ul> 
            <li class="secondlevel" data-nature="doc" data-type="pdf" data-partage="oui"></li> 
        </ul>
    </li> 
</ul>  

`

  • Le code est plus lisible
  • Les données sont qualifiées et classées
  • Ça facilite la reprise du code
  • Et ça évite quelques erreurs dans le javascript

Attention : les données que vous stockez dans l'attribut data ne doivent pas être confidentiel car elle seront lisible dans le code html. 

Bien sûr cet attribut n’est utile que lors d’un traitement coté client et dans quelques cas spécifiques mais je suis que vous en trouverez rapidement une utilité !

Nathanaël Cherrier

Ingenieur de développement mobile et web pour Econocom. Passionné par le développement en général, mais plus particulièrement par le développement web et mobile, je vous raconte mes petits secrets.

Subscribe to Mindsers IT

Get the latest posts delivered right to your inbox.

or subscribe via RSS with Feedly!