Start · Sprachen · JavaScript · Referenz · MathMLAnchorElement

MathMLAnchorElement

Schnittstelle

Repräsentiert das MathML-Element <code>&lt;a&gt;</code> (Hyperlink innerhalb von Formeln) und bietet Eigenschaften wie <code>href</code> und <code>target</code> zum Lesen und Setzen der Link-Merkmale.

seit JavaScript Experimentell: MathML-Core-Erweiterung, bisher nur Kategorie: webapi

Signatur

interface MathMLAnchorElement extends MathMLElement

Beschreibung

Die Schnittstelle MathMLAnchorElement steht für Hyperlink-Elemente innerhalb von MathML-Markup, also für ein <a> im MathML-Namensraum (http://www.w3.org/1998/Math/MathML). Damit lassen sich einzelne Teile einer Formel – etwa ein Symbol, eine Variable oder ein ganzer Teilausdruck – anklickbar machen und zum Beispiel auf eine Definition, ein Glossar oder eine Herleitung verlinken.

Die Schnittstelle erbt von MathMLElement (und damit von Element, Node und EventTarget). Sie spiegelt die Link-Attribute als DOM-Eigenschaften wider, ähnlich wie HTMLAnchorElement im HTML-Namensraum:

  • href – das Linkziel als Zeichenkette (spiegelt das Attribut href).
  • target – der Browsing-Kontext, in dem der Link geöffnet wird (z. B. _blank, _self).

Einsetzen solltest du die Schnittstelle, wenn du MathML dynamisch per JavaScript erzeugst oder vorhandene Formel-Links nachträglich anpassen willst (z. B. Linkziele umschreiben, Links in neuem Tab öffnen). Wichtig: Elemente müssen mit document.createElementNS() und dem MathML-Namensraum erzeugt werden – document.createElement("a") erzeugt stets ein HTMLAnchorElement.

Parameter

Name Typ Default Beschreibung
$href string "" Eigenschaft: URL des Linkziels; spiegelt das Attribut href des MathML-<a>-Elements.
$target string "" Eigenschaft: Name des Browsing-Kontexts, in dem der Link geöffnet wird, z. B. "_blank"; spiegelt das Attribut target.

Rückgabewert

Typ
MathMLAnchorElement
Beschreibung
Eine Instanz entsteht nicht per Konstruktor, sondern durch Parsen von MathML-Markup oder durch document.createElementNS("http://www.w3.org/1998/Math/MathML", "a").

Beispiele

MathML-Link dynamisch erzeugen

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

// <math><a href="..."><mi>π</mi></a></math>
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", "https://de.wikipedia.org/wiki/Kreiszahl");
link.appendChild(mi);
math.appendChild(link);
document.body.appendChild(math);

console.log(link.namespaceURI);
console.log(typeof MathMLAnchorElement !== "undefined" && link instanceof MathMLAnchorElement);
http://www.w3.org/1998/Math/MathML true // bzw. false, wenn der Browser die Schnittstelle noch nicht kennt

Alle Formel-Links in neuem Tab öffnen (mit Feature-Erkennung)

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

for (const link of links) {
  if (typeof MathMLAnchorElement !== "undefined" && link instanceof MathMLAnchorElement) {
    // Reflektierte Eigenschaft nutzen
    link.target = "_blank";
  } else {
    // Rückfall: Attribut direkt setzen
    link.setAttribute("target", "_blank");
  }
}

console.log(`${links.length} MathML-Links angepasst`);
3 MathML-Links angepasst

Linkziele relativ zu einem Glossar umschreiben

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

document.querySelectorAll("math a[href^='#']").forEach((link) => {
  const anker = link.getAttribute("href");
  link.setAttribute("href", `/glossar${anker}`);
  console.log(link.namespaceURI === MATHML_NS, link.getAttribute("href"));
});
true "/glossar#ableitung"

// Wichtig · Fallstricke

  • Browser-Unterstützung: MathMLAnchorElement ist experimentell und noch nicht in allen Browsern verfügbar. Prüfe vorab mit typeof MathMLAnchorElement !== "undefined" und greife ansonsten auf setAttribute()/getAttribute() zurück. Auch ob ein MathML-<a> tatsächlich als klickbarer Link gerendert wird, hängt vom Browser ab.
  • Namensraum: document.createElement("a") liefert immer ein HTMLAnchorElement. Für MathML ist createElementNS() mit http://www.w3.org/1998/Math/MathML Pflicht. Im HTML-Parser werden <a>-Tags innerhalb von <math> korrekt dem MathML-Namensraum zugeordnet.
  • Kein HTMLAnchorElement: Eigenschaften wie download, rel, hostname oder pathname von HTMLAnchorElement sind nicht zwingend vorhanden – nicht blind darauf verlassen.
  • Sicherheit: Wie bei HTML-Links gilt: Nutzereingaben nie ungeprüft in href schreiben (Gefahr durch javascript:-URLs). Bei target="_blank" auf fremde Seiten sollte, falls unterstützt, rel="noopener" gesetzt werden.
  • Barrierefreiheit: Verlinkte Formelteile sollten für Screenreader verständlich sein, etwa durch aussagekräftigen Kontext oder aria-label.