En HTML5, les éléments peuvent avoir des métadonnées arbitraires stockées dans des attributs XML dont les noms commencent par data-
tels que <p data-myid="123456">
. Cela fait-il également partie de la spécification SVG?
En pratique, cette technique fonctionne bien pour les documents SVG dans de nombreux endroits. Mais j'aimerais savoir si cela fait partie de la spécification officielle SVG ou non, car le format est suffisamment jeune pour qu'il y ait encore beaucoup d'incompatibilité entre les navigateurs, en particulier sur mobile. Donc, avant de m'engager dans le code, j'aimerais savoir si je peux m'attendre à ce que les futurs navigateurs convergent pour prendre en charge cela.
J'ai trouvé ce message de la liste de diffusion du groupe de travail disant qu'ils "s'attendent à ce [qu'ils]" le soutiennent. Cela est-il devenu officiel?
la source
el.getAttribute('mydata:id')
pour obtenir les données que vous avez attachées à l'élément SVG. (Remarque: si vous utilisez d3, l'espace de noms sera supprimé par défaut et vous ne le ferez queel.getAttribute('id')
.)data-*
en SVG?<svg xmlns="http://www.w3.org/2000/svg" xmlns:mydata="http://www.myexample.com/whatever"><text x="10" y="20" mydata:id="something">SVG</text></svg>
:) ou l'espace de noms xhtml, aucun des deux ne validera sur validator.w3.org/check (en utilisant SVG 1.1), mais les deux fonctionnent dans le navigateur. Il est alors possible d'utiliser l'ungetAttribute
ou l' autre ougetAttributeNS
pour récupérer les données.L'
data-*
attribut fait partie de HTML5. Ce n'est pas un attribut XML générique.La recommandation actuelle du SVG W3C est SVG 1.1 (à partir de 2011-08). Il n'autorise pas cet attribut, car vous pouvez vérifier dans la liste des attributs .
Il en va de même pour le document de travail SVG 2 (à partir de 2012-08). Mise à jour (2015) : Il semble qu'il soit destiné à prendre en charge les
data-*
attributs dans SVG 2 (actuellement encore un brouillon de travail).la source
data-*
Les attributs sur les éléments SVG sont officiellement pris en charge dans le projet actuel de SVG2. Voir:w3c/svgwg
commit1cb4ee9
: attributs ajoutésSVGElement.dataset
et autorisésdata-*
sur tous les éléments SVG.la source
il existe un mécanisme plus général.
svg prend en charge les
desc
éléments qui peuvent contenir du xml arbitraire d'autres espaces de noms. liez des instances de ces éléments ou des nœuds enfants à partir de votre propre espace de noms par des identifiants dépendants ou des attributs refid.c'est la partie pertinente de la spécification (5.4) .
la source
data-
attributs?desc
fait pour des raisons d'accessibilité?aria-labelledby
attributs et des éléments desc comme étiquettes accessibles. MDN recommande une utilisation similaire. étant donné la pléthore de résultats Google, les meilleures pratiques pour les svg accessibles pourraient valoir la peine d'être posées,desc
éléments de réponse pour des données arbitraires, il est (à mon humble avis) tout à fait évident d'après le lien que ce n'était pas le but visé de l'desc
élément. Je ne dis pas que vous ne devriez pas le faire, mais simplement qu'il existe un meilleur moyen.