Start · Sprachen · JavaScript · Referenz · MathMLAnchorElement.username

MathMLAnchorElement.username

Eigenschaft

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

seit JavaScript Experimentell: nur in einzelnen Browsern (MathML-C Kategorie: webapi

Signatur

MathMLAnchorElement.username

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

Typ
string
Beschreibung
Der prozentkodierte Benutzername aus der URL in 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);
}
anna

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 = "";
  }
}
Zugangsdaten entfernt aus: example.com

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"));
max%20muster https://max%20muster@example.com/satz/pythagoras

// Wichtig · Fallstricke

  • Kompatibilität: MathMLAnchorElement mit 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 sich new 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 Schema file: hat das Setzen keine Wirkung.