Signatur
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
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');
}
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();
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'));
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));
// Wichtig · Fallstricke
- Kompatibilität:
MathMLAnchorElementund 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 mitnew 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:oderdata:, wird die Zuweisung stillschweigend ignoriert. Das gilt auch, wennhrefungültig ist. - Kodierung: Der gelesene Wert ist prozentkodiert. Den Klartext bekommst du mit
decodeURIComponent(). - Das Element muss im MathML-Namensraum erzeugt werden (
createElementNS). Mitdocument.createElement('a')entsteht einHTMLAnchorElement.