16 février 2012

Le HTML5 peut modifier vos données

J'affectionne particulièrement développer avec JQuery mais hier, je me suis buté à un problème important. En fait, le problème ne provient pas de JQuery lui-même, mais plutôt de sa conformité à la spécification W3C du HTML5 en matière de nommage des attributs non visibles.  Pour ceux, qui comme moi, aiment utiliser la méthode .data() de JQuery, cette spécification à une incidence assez importante; elle enlève systématiquement les tirets dans le nom de vos attributs...OUCH!

Si vous stockez la valeur 1 dans la variable Foo-Bar:
$('body').data('Foo-Bar', 1)
Vous pourrez ensuite la récupérer comme ceci:
console.log($('body').data('Foo-Bar')) = 1
Mais de façon interne, la valeur sera conservée sous FooBar:
$.each($('body').data(),function(i,e){console.log(i)}) = FooBar
Donc FooBar contiendra également la valeur 1:
console.log($('body').data('FooBar')) = 1
L'action suivante écrasera la valeur initiale:
$('body').data('FooBar', 2)
Dorénavant:
console.log($('body').data('Foo-Bar')) = 2
et évidemment:
console.log($('body').data('FooBar')) = 2

À partir du moment que l'on est conscient de ce problème comportement, il est facilement contournable.  Je fais partie de ceux qui essaient tant bien que mal de se conformer aux normes et spécifications dans le développement d'applications. Je dois par contre avouer que je n'aime pas que l'on altère mes données, SURTOUT sans même m'en avertir.  C'est probablement mon côté franco-canadien hyperprotecteur de mes données...

0 commentaires:

Enregistrer un commentaire