Start · Sprachen · JavaScript · Referenz · MathMLAnchorElement.password

MathMLAnchorElement.password

Eigenschaft

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

seit JavaScript Experimentell: noch nicht in allen Browsern verfüg Kategorie: webapi

Signatur

MathMLAnchorElement.password

Beschreibung

Die Eigenschaft password der Schnittstelle MathMLAnchorElement ist ein String mit dem Passwortteil der URL, auf die das MathML-Element <a> über sein href-Attribut verweist. Bei https://anna:geheim@example.com/ ist das der Wert "geheim", also alles zwischen dem ersten Doppelpunkt nach dem Benutzernamen und dem @.

Die Eigenschaft funktioniert genauso wie HTMLAnchorElement.password und URL.password. Beim Lesen bekommst du den prozentkodierten Passwortteil. Gibt es kein Passwort oder lässt sich href nicht als URL auswerten, ist das Ergebnis ein leerer String. Beim Schreiben wird das href-Attribut des Elements direkt geändert. Sonderzeichen werden dabei automatisch prozentkodiert.

In der Praxis brauchst du die Eigenschaft selten. Sie ist vor allem nützlich, wenn du Links in eingebetteten mathematischen Formeln prüfen, bereinigen oder umschreiben willst, ohne die URL selbst zu zerlegen. Eine typische Aufgabe ist es, Zugangsdaten aus Links zu entfernen, bevor Inhalte angezeigt werden.

Parameter

Name Typ Default Beschreibung
$value string Nur beim Schreiben: das neue Passwort. Es wird prozentkodiert und in das href-Attribut übernommen. Ein leerer String entfernt das Passwort.

Rückgabewert

Typ
string
Beschreibung
Der prozentkodierte Passwortteil der href-URL oder ein leerer String, wenn es kein Passwort gibt oder die URL ungültig ist.

Beispiele

Passwort aus einem MathML-Link lesen

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

// MathML-<a>-Element erzeugen
const link = document.createElementNS(MATHML_NS, 'a');
link.setAttribute('href', 'https://anna:geheim@example.com/formeln/euler');

if ('password' in link) {
  console.log(link.password);
} else {
  console.log('MathMLAnchorElement.password wird nicht unterstützt');
}
geheim

Zugangsdaten aus allen Formel-Links entfernen

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

const bereinigeLinks = (root = document) => {
  const links = root.getElementsByTagNameNS(MATHML_NS, 'a');
  for (const link of links) {
    if ('password' in link && (link.password || link.username)) {
      link.password = '';
      link.username = '';
      console.log('Bereinigt:', link.getAttribute('href'));
    }
  }
};

bereinigeLinks();
Bereinigt: https://example.com/formeln/euler

Passwort setzen – Sonderzeichen werden kodiert

const link = document.createElementNS('http://www.w3.org/1998/Math/MathML', 'a');
link.setAttribute('href', 'https://bob@example.com/');

link.password = 'p@ss wort';
console.log(link.password);
console.log(link.getAttribute('href'));
p%40ss%20wort https://bob:p%40ss%20wort@example.com/

Fallback über die URL-API

// Funktioniert auch in Browsern ohne MathMLAnchorElement-Unterstützung
const passwortVon = (el) => {
  if ('password' in el) return el.password;
  try {
    return new URL(el.getAttribute('href') ?? '', document.baseURI).password;
  } catch {
    return '';
  }
};

const link = document.createElementNS('http://www.w3.org/1998/Math/MathML', 'a');
link.setAttribute('href', 'ftp://user:1234@files.example.org/');
console.log(passwortVon(link));
1234

// Wichtig · Fallstricke

  • Kompatibilität: MathMLAnchorElement und seine URL-Eigenschaften sind experimentell und werden bisher nur von wenigen Browsern unterstützt. Prüfe vor der Nutzung mit 'password' in element, ob die Eigenschaft vorhanden ist. Wenn nicht, werte die URL mit new URL() aus.
  • Sicherheit: Zugangsdaten in URLs sind im Klartext sichtbar, zum Beispiel im DOM, im Verlauf, in Server-Logs und über den Referer. Viele Browser blockieren oder warnen bei Navigationen zu URLs mit eingebetteten Zugangsdaten. Speichere keine echten Passwörter in href-Attributen.
  • Setzen ohne Wirkung: Hat die URL keinen Host oder ein Schema wie file:, mailto: oder data:, wird die Zuweisung stillschweigend ignoriert. Das gilt auch, wenn href ungültig ist.
  • Kodierung: Der gelesene Wert ist prozentkodiert. Den Klartext bekommst du mit decodeURIComponent().
  • Das Element muss im MathML-Namensraum erzeugt werden (createElementNS). Mit document.createElement('a') entsteht ein HTMLAnchorElement.