Start · Sprachen · JavaScript · Referenz · MathMLAnchorElement.href

MathMLAnchorElement.href

Eigenschaft

Gibt die absolute URL des <code>href</code>-Attributs eines MathML-<code>&lt;a&gt;</code>-Elements als String zurück; ohne gesetztes Attribut einen leeren String.

seit JavaScript Experimentell: eingeschränkte Browser-Unterstützun Kategorie: webapi

Signatur

MathMLAnchorElement.href

Beschreibung

Die Eigenschaft href der Schnittstelle MathMLAnchorElement spiegelt das href-Attribut eines <a>-Elements im MathML-Namensraum (http://www.w3.org/1998/Math/MathML) wider. Sie ist ein Stringifier: Wird das Element in einen String umgewandelt, etwa durch Template-Literale oder String(element), kommt genau dieser Wert heraus.

Anders als getAttribute("href") liefert die Eigenschaft nicht den Rohwert, sondern die gegen die Basis-URL des Dokuments aufgelöste absolute URL. Aus einem relativen Wert wie "formeln/pythagoras.html" wird so zum Beispiel "https://example.com/formeln/pythagoras.html". Fehlt das Attribut, ist der Rückgabewert ein leerer String "".

Nützlich ist die Eigenschaft, wenn Formelteile in MathML-Ausdrücken als Links dienen, etwa ein Symbol, das auf seine Definition verweist, und du diese Links per Skript prüfen, protokollieren oder umschreiben möchtest. Weist du der Eigenschaft einen Wert zu, wird das href-Attribut entsprechend gesetzt.

Rückgabewert

Typ
string
Beschreibung
Die absolute, aufgelöste URL aus dem href-Attribut, oder "", wenn das Attribut fehlt.

Beispiele

MathML-Link erzeugen und absolute URL auslesen

const MATHML_NS = "http://www.w3.org/1998/Math/MathML";

const math = document.createElementNS(MATHML_NS, "math");
const link = document.createElementNS(MATHML_NS, "a");
const mi = document.createElementNS(MATHML_NS, "mi");
mi.textContent = "π";

link.setAttribute("href", "/konstanten/pi");
link.append(mi);
math.append(link);
document.body.append(math);

// Angenommen, die Seite läuft unter https://example.com/artikel/
console.log(link.getAttribute("href")); // Rohwert
console.log(link.href);                 // aufgelöste URL
/konstanten/pi https://example.com/konstanten/pi

Stringifier-Verhalten und fehlendes Attribut

const MATHML_NS = "http://www.w3.org/1998/Math/MathML";
const link = document.createElementNS(MATHML_NS, "a");

console.log(JSON.stringify(link.href)); // noch kein href gesetzt

link.setAttribute("href", "https://de.wikipedia.org/wiki/Eulersche_Zahl");
console.log(`Link-Ziel: ${link}`); // Stringifier liefert href
"" Link-Ziel: https://de.wikipedia.org/wiki/Eulersche_Zahl

Alle Formel-Links prüfen, mit Fallback

const MATHML_NS = "http://www.w3.org/1998/Math/MathML";

const getMathHref = (el) =>
  "MathMLAnchorElement" in window && el instanceof MathMLAnchorElement
    ? el.href
    : new URL(el.getAttribute("href") ?? "", document.baseURI).href;

const links = document.getElementsByTagNameNS(MATHML_NS, "a");
for (const link of links) {
  if (!link.hasAttribute("href")) continue;
  const url = new URL(getMathHref(link));
  if (url.origin !== location.origin) {
    console.log("Externer Formel-Link:", url.href);
  }
}
Externer Formel-Link: https://de.wikipedia.org/wiki/Eulersche_Zahl

// Wichtig · Fallstricke

  • Kompatibilität: MathMLAnchorElement ist experimentell und wird noch nicht in allen Browsern unterstützt. Prüfe die Verfügbarkeit mit "MathMLAnchorElement" in window und greife sonst auf getAttribute("href") zusammen mit new URL(wert, document.baseURI) zurück.
  • Das Element muss im MathML-Namensraum erzeugt werden (createElementNS). document.createElement("a") liefert ein HTMLAnchorElement, kein MathML-Element.
  • href gibt die aufgelöste URL zurück, getAttribute("href") dagegen den Rohwert. Beim Vergleichen oder Umschreiben von Links solltest du die beiden nicht verwechseln.
  • Sicherheit: Werte wie javascript:-URLs werden nicht gefiltert. Übernimm Link-Ziele aus Benutzereingaben niemals ungeprüft, sonst drohen XSS-Angriffe. Prüfe vorher das Protokoll (new URL(...).protocol).