In HTML5 können Elemente beliebige Metadaten in XML-Attributen gespeichert haben, deren Namen mit data-
z <p data-myid="123456">
. Ist dieser Teil der SVG-Spezifikation auch?
In der Praxis funktioniert diese Technik an vielen Stellen gut für SVG-Dokumente. Aber ich würde gerne wissen, ob es Teil der offiziellen SVG-Spezifikation ist oder nicht, da das Format jung genug ist, dass es immer noch viele Inkompatibilitäten zwischen Browsern gibt, insbesondere auf Mobilgeräten. Bevor ich mich zum Code verpflichte, möchte ich wissen, ob ich davon ausgehen kann, dass zukünftige Browser konvergieren, um dies zu unterstützen.
Ich fand diese Nachricht aus der Mailingliste der Arbeitsgruppe, dass sie "erwarten, dass [sie] sie unterstützen". Wurde dies offiziell?
quelle
el.getAttribute('mydata:id')
Um die Daten zu erhalten, die Sie an das SVG-Element angehängt haben. (Hinweis: Wenn Sie d3 verwenden, wird der Namespace standardmäßig entfernt und Sie werden nurel.getAttribute('id')
.)data-*
in SVG zu verwenden?<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>
) oder xhtml Namespace, so wird sich auf validieren validator.w3.org/check (unter Verwendung von SVG 1.1), aber beide funktionieren im Browser. Es ist dann möglich, entwedergetAttribute
odergetAttributeNS
zu verwenden, um die Daten abzurufen.Das
data-*
Attribut ist Teil von HTML5. Es ist kein generisches XML-Attribut.Die aktuelle SVG W3C-Empfehlung lautet SVG 1.1 (von 2011-08). Dieses Attribut ist nicht zulässig, da Sie in der Attributliste nachsehen können .
Das gleiche ist der Fall für die SVG Working Draft 2 (2012-08). Update (2015) : Es scheint , dass es beabsichtigt ist , um Unterstützung
data-*
Attribute in SVG 2 (zur Zeit noch ein Working Draft).quelle
data-*
Attribute für SVG-Elemente werden im aktuellen Entwurf von SVG2 offiziell unterstützt. Sehen:w3c/svgwg
Festschreiben1cb4ee9
: Für alle SVG-Elemente wurden Attribute hinzugefügtSVGElement.dataset
und zugelassendata-*
.quelle
Es gibt einen allgemeineren Mechanismus.
svg unterstützt
desc
Elemente, die beliebige XML-Dateien aus anderen Namespaces enthalten können. Verknüpfen Sie Instanzen dieser Elemente oder untergeordneten Knoten aus Ihrem eigenen Namespace durch abhängige IDs oder Refid-Attribute.Dies ist der relevante Teil der Spezifikation (5.4) .
quelle
data-
Attribute nicht offiziell unterstützt ?desc
für Zugänglichkeit gedacht?aria-labelledby
Attributen und absteigenden Elementen als zugängliche Beschriftungen erörtert wird. MDN empfiehlt eine ähnliche Verwendung. gegeben könnte die Fülle von Google - Ergebnisse, Best Practices für die zugänglich svg wert sein eine Frage der eigenen,desc
Riptionselemente für beliebige Daten (falsch) verwenden können, (IMHO) aus dem Link ziemlich offensichtlich ist, dass dies nicht der beabsichtigte Zweck desdesc
Elements war. Nicht zu sagen, dass du es nicht tun sollst, nur dass es einen besseren Weg gibt.