Start · Sprachen · JavaScript · Referenz · MathMLAnchorElement.port

MathMLAnchorElement.port

Eigenschaft

Liest oder setzt die Portnummer der URL im <code>href</code>-Attribut eines MathML-<code>&lt;a&gt;</code>-Elements als String.

seit JavaScript Experimentell: bisher nur in einzelnen Browsern (n Kategorie: webapi

Signatur

MathMLAnchorElement.port

Beschreibung

Die Eigenschaft port der Schnittstelle MathMLAnchorElement gibt den Port-Anteil der URL zurück, die im href-Attribut eines MathML-Links (<a> im MathML-Namensraum) steht. Sie verhält sich genauso wie HTMLAnchorElement.port und URL.port: Der Wert ist immer ein String, keine Zahl.

Ist in der URL kein Port angegeben oder entspricht er dem Standardport des Schemas (z. B. 80 bei http:, 443 bei https:), liefert die Eigenschaft einen leeren String. Dasselbe gilt, wenn href fehlt oder keine gültige URL ergibt.

Die Eigenschaft ist auch beschreibbar: Weist man ihr einen Wert zu, wird das href-Attribut entsprechend angepasst. So lassen sich Links in mathematischen Formeln (z. B. auf eine Entwicklungs- oder Staging-Umgebung) umbiegen, ohne die URL manuell zusammenzusetzen. Relative href-Werte werden dabei gegen die Basis-URL des Dokuments aufgelöst.

Rückgabewert

Typ
string
Beschreibung
Die Portnummer als String (z. B. "8080") oder "", wenn kein bzw. der Standardport verwendet wird oder href ungültig ist.

Beispiele

Port eines MathML-Links auslesen

const MATHML_NS = "http://www.w3.org/1998/Math/MathML";
const link = document.createElementNS(MATHML_NS, "a");
link.setAttribute("href", "https://mathe.example.com:8443/formeln/pythagoras");

// Funktionsprüfung, da die Unterstützung noch gering ist
if ("port" in link) {
  console.log(link.port);
} else {
  console.log("MathMLAnchorElement.port nicht unterstützt");
}
8443

Standardport ergibt leeren String

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

link.setAttribute("href", "https://example.com:443/seite");
console.log(JSON.stringify(link.port));

link.setAttribute("href", "http://example.com/seite");
console.log(JSON.stringify(link.port));
"" ""

Alle Formel-Links auf einen lokalen Dev-Server umleiten

const links = document.querySelectorAll("math a[href]");

for (const link of links) {
  if (!("port" in link)) continue; // ältere Browser überspringen
  link.hostname = "localhost";
  link.port = "3000"; // passt href automatisch an
  console.log(link.getAttribute("href"));
}
http://localhost:3000/formeln/pythagoras

// Wichtig · Fallstricke

  • Kompatibilität: MathMLAnchorElement ist ein neues, experimentelles Feature und wird bisher nicht von allen Browsern unterstützt. Vorher mit "port" in element prüfen oder als Ausweichlösung new URL(element.getAttribute("href"), document.baseURI).port verwenden.
  • Der Rückgabewert ist ein String. Zum Rechnen oder Vergleichen mit Zahlen Number(link.port) verwenden und den leeren String gesondert behandeln.
  • Standardports (80/443) werden nie angezeigt – ein leerer String heißt also nicht automatisch „kein Port“.
  • Das Element muss im MathML-Namensraum erzeugt werden (createElementNS). Mit document.createElement("a") entsteht dagegen ein HTMLAnchorElement.
  • Ungültige Portwerte beim Setzen (z. B. "abc" oder größer als 65535) werden ignoriert, href bleibt dann unverändert.