Signatur
Beschreibung
Die Eigenschaft host von SVGAElement gibt den Host-Anteil der URL zurück, auf die ein SVG-Link (<a href="…"> innerhalb eines <svg>) zeigt. Der Wert besteht aus dem Hostnamen und, falls vorhanden und nicht der Standardport des Schemas, einem Doppelpunkt mit Portnummer, z. B. "example.com:8080".
SVG 2 bindet dafür die Schnittstelle HTMLHyperlinkElementUtils ein, die auch HTMLAnchorElement nutzt. Dadurch stehen an SVG-Links dieselben URL-Zerlegungseigenschaften zur Verfügung wie an HTML-Links: protocol, host, hostname, port, pathname, search, hash und origin. Relative URLs werden gegen die Basis-URL des Dokuments aufgelöst.
Setzt man host, wird das href-Attribut des Elements entsprechend umgeschrieben, die übrigen URL-Bestandteile bleiben erhalten. Das ist praktisch, um z. B. alle Links in einer eingebetteten SVG-Grafik von einer Staging- auf eine Produktionsdomain umzustellen. Hat das Element kein gültiges href, liefert host einen leeren String.
Rückgabewert
:Port der aufgelösten Ziel-URL, z. B. "example.com" oder "localhost:3000". Leerer String, wenn kein gültiges href vorhanden ist oder die URL keinen Host hat (z. B. mailto:).Beispiele
Host eines SVG-Links auslesen
// <svg><a id="logo-link" href="https://example.com:8443/start?ref=svg"><circle r="20" cx="25" cy="25"/></a></svg>
const link = document.querySelector('#logo-link');
console.log(link instanceof SVGAElement); // true
console.log(link.host);
Mit Feature-Erkennung und Fallback über URL
const getSvgLinkHost = (a) => {
if (typeof a.host === 'string') return a.host;
// Fallback: href ist bei SVG ein SVGAnimatedString
const raw = a.href?.baseVal ?? a.getAttribute('href') ?? '';
try {
return new URL(raw, document.baseURI).host;
} catch {
return '';
}
};
document.querySelectorAll('svg a').forEach((a) => {
console.log(getSvgLinkHost(a));
});
Alle SVG-Links auf eine andere Domain umstellen
const svgLinks = document.querySelectorAll('svg a');
for (const a of svgLinks) {
if ('host' in a && a.host === 'staging.example.com') {
a.host = 'www.example.com'; // Pfad, Query und Hash bleiben erhalten
}
console.log(a.getAttribute('href'));
}
// Wichtig · Fallstricke
- Browser-Kompatibilität: Die URL-Zerlegungseigenschaften an
SVGAElementwerden nicht von allen Browsern unterstützt. Vor Gebrauch mit'host' in elementprüfen und bei Bedarf aufnew URL(…)ausweichen. - Nicht mit
hrefverwechseln: An SVG-Links isthrefeinSVGAnimatedString(ausSVGURIReference), kein String. Den eigentlichen Wert lieferta.href.baseValodera.getAttribute('href'). hostoderhostname:hostenthält den Port,hostnamenicht. Standardports (443 bei https, 80 bei http) tauchen nicht auf.- Ältere SVG-Dateien nutzen oft
xlink:href. Die aufgelöste URL berücksichtigt das zwar, aber beim Setzen vonhostkann je nach Implementierung dashref-Attribut ohne Namensraum geschrieben werden. - Bei URLs ohne Host (z. B.
mailto:,data:) ist der Wert ein leerer String, und das Setzen hat keine Wirkung.