Signatur
Beschreibung
Die Eigenschaft username der Schnittstelle MathMLAnchorElement gibt den Benutzernamen zurück, der in der URL des href-Attributs eines MathML-Links steht. Das ist der Teil vor dem optionalen :passwort und dem @, etwa anna in https://anna:geheim@example.com/. Enthält die URL keinen Benutzernamen oder lässt sie sich nicht auswerten, ist der Wert ein leerer String.
Die Eigenschaft funktioniert genauso wie HTMLAnchorElement.username und URL.username. Sie gehört zu einer Gruppe von Eigenschaften zum Zerlegen von URLs (protocol, host, pathname, search, hash …). Das ist praktisch, wenn Links in mathematischen Formeln, z. B. auf Definitionen oder Quellen, per Skript geprüft oder umgeschrieben werden sollen.
Die Eigenschaft ist beschreibbar. Weist man ihr einen Wert zu, wird das href-Attribut neu zusammengesetzt. Sonderzeichen werden dabei prozentkodiert. Bei URLs, die keine Zugangsdaten haben können (z. B. ohne Host oder mit dem Schema file:), wird die Zuweisung stillschweigend ignoriert.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $wert | string | Nur beim Setzen: der neue Benutzername. Sonderzeichen wie @, : oder Leerzeichen werden automatisch prozentkodiert. |
Rückgabewert
href, oder "", wenn es keinen gibt oder die URL ungültig ist.Beispiele
Benutzername 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://anna:geheim@example.com/formeln/euler");
if ("username" in link) {
console.log(link.username);
} else {
// Rückfall für Browser ohne MathMLAnchorElement-URL-Eigenschaften
console.log(new URL(link.getAttribute("href"), document.baseURI).username);
}
Zugangsdaten aus allen Formel-Links entfernen
// Zugangsdaten sollen nicht im ausgelieferten Markup stehen
const links = document.querySelectorAll("math a[href]");
for (const link of links) {
if (!("username" in link)) continue; // keine Browser-Unterstützung
if (link.username) {
console.warn(`Zugangsdaten entfernt aus: ${link.hostname}`);
link.username = "";
link.password = "";
}
}
Benutzernamen setzen – mit automatischer Kodierung
const link = document.createElementNS("http://www.w3.org/1998/Math/MathML", "a");
link.setAttribute("href", "https://example.com/satz/pythagoras");
link.username = "max muster";
console.log(link.username);
console.log(link.getAttribute("href"));
// Wichtig · Fallstricke
- Kompatibilität:
MathMLAnchorElementmit URL-Eigenschaften ist experimentell und wird nur von wenigen Browsern unterstützt. Prüfen Sie die Unterstützung vorher, z. B. mit"username" in element. Als Rückfall eignet sichnew URL(element.getAttribute("href"), document.baseURI).username. - Sicherheit: Zugangsdaten in URLs sind für jeden sichtbar, der den Quelltext liest. Außerdem entfernen moderne Browser sie bei Navigationen oft oder warnen davor. Speichern Sie keine echten Passwörter oder Benutzernamen in
href. - Der Rückgabewert ist prozentkodiert. Mit
decodeURIComponent()erhalten Sie den ursprünglichen Text. - Bei relativen
href-Werten wird zuerst gegen die Basis-URL des Dokuments aufgelöst. Ist die URL ungültig, gibt die Eigenschaft einen leeren String zurück. - Bei URLs ohne Host, zum Beispiel
mailto:, oder mit dem Schemafile:hat das Setzen keine Wirkung.