Über die veraltete xlink:href-Angabe in SVG

Avatar of Chris Coyier
Chris Coyier am

DigitalOcean bietet Cloud-Produkte für jede Phase Ihrer Reise. Starten Sie mit 200 $ kostenlosem Guthaben!

Ein Leser schrieb mir, dass wir unsere Artikel über SVG-<use>-Elemente aktualisieren sollten. Das Attribut, das wir dafür immer verwenden, xlink:href, ist veraltet. Tatsächlich sagt MDN:

Deprecated since SVG 2
This feature has been removed from the Web standards. Though some browsers may still support it, it is in the process of being dropped. Avoid using it and update existing code if possible; see the compatibility table at the bottom of this page to guide your decision. Be aware that this feature may cease to work at any time.

Das sind ziemlich deutliche Worte, daher die Warnung des Lesers. Das überrascht mich ein wenig, da die SVG 2-Sache ein wenig seltsam wurde. Es scheint jedoch eine Candidate Recommendation geworden zu sein.

Also…

<!-- This is old -->
<svg>
  <use xlink:href="#whatever" />
</svg>

<!-- This is new -->
<svg>
  <use href="#whatever" />
</svg>

Mir gefällt das. Aber funktioniert es auch wirklich? Lass mich meine kleine alte Demo forken und alle Referenzen ändern. In einem schnellen Durchlauf dessen, worauf ich leichten Zugriff habe

Chrome 67 Firefox 61 Safari 11 Edge 17 IE 11 iOS 11
🙅‍♂️ 🙅‍♂️

Besser als gedacht! Aber da gab es genug 🙅‍♂️ „geht nicht“, sodass das Umstellen von allem zu gefährlich erscheint, besonders wenn xlink:href auf breiter Front unterstützt wird.

Werden Browser tatsächlich die Unterstützung *entziehen*? Ich wette 50 Dollar, dass keiner von ihnen das jemals tun wird. Es gibt unzählige Websites, die das Attribut im alten Format verwenden und niemals aktualisiert werden, und wir wissen, dass Browser es sehr ernst nehmen, alte Seiten zu brechen (yay).

Es fühlt sich an wie dasselbe mit z. B. :before und ::before. Ja, ::before ist die neue und korrektere Syntax. Aber kein Browser wird jemals die Unterstützung für :before entziehen (ich wette nochmal 50 Dollar), weil es nur unnötig Seiten kaputt macht. Und deshalb ist es fast am sinnvollsten, :before weiterhin zu verwenden, da Sie damit die breiteste Unterstützung erhalten.

Ich werde ältere Artikel, die <use xlink:href="" /> verwenden, wahrscheinlich nicht aktualisieren, es sei denn, es passiert etwas Seltsames und ein Browser entzieht tatsächlich die Unterstützung.