Start · Sprachen · JavaScript · Referenz · MathMLAnchorElement.protocol

MathMLAnchorElement.protocol

Eigenschaft

Liest oder setzt das Protokoll (Schema) der URL im <code>href</code>-Attribut eines MathML-<code>&lt;a&gt;</code>-Elements, einschließlich des abschließenden <code>":"</code>.

seit JavaScript Experimentell: bislang kaum Browser-Unterstützung Kategorie: webapi

Signatur

MathMLAnchorElement.protocol

Beschreibung

Die Eigenschaft protocol der Schnittstelle MathMLAnchorElement gibt das Schema der verlinkten URL als String zurück, zum Beispiel "https:", "mailto:" oder "ftp:". Der Doppelpunkt am Ende gehört immer dazu. Sie funktioniert genauso wie HTMLAnchorElement.protocol, nur für Links in MathML-Formeln (<a> im MathML-Namensraum http://www.w3.org/1998/Math/MathML).

Die Eigenschaft ist lesbar und schreibbar. Wenn du einen neuen Wert zuweist, ändert der Browser nur das Schema der URL und schreibt das Ergebnis zurück in das href-Attribut. Host, Pfad, Suchparameter und Fragment bleiben gleich. Den abschließenden Doppelpunkt kannst du beim Setzen weglassen. Der Browser ergänzt ihn selbst.

Typische Anwendungen:

  • Verweise in Formeln prüfen, zum Beispiel nur https:-Links zulassen.
  • Unsichere http:-Links nachträglich auf https: umstellen.
  • Links nach Art sortieren oder anders gestalten, etwa mailto: oder externe Links.

Fehlt das href-Attribut oder lässt sich sein Wert nicht als URL lesen, liefert die Eigenschaft einen leeren String "". Relative URLs werden vorher mit der Basis-URL des Dokuments aufgelöst. Deshalb liefert ein relativer Link normalerweise das Protokoll der aktuellen Seite.

Parameter

Name Typ Default Beschreibung
$wert (beim Setzen) string Neues Schema, z. B. "https" oder "https:". Ungültige Werte und manche Wechsel zwischen besonderen Schemata (z. B. von https: zu mailto:) werden ohne Fehlermeldung ignoriert.

Rückgabewert

Typ
string
Beschreibung
Das Protokoll der aufgelösten href-URL mit abschließendem ":", z. B. "https:". Ohne gültiges href ein leerer String.

Beispiele

Protokoll eines MathML-Links auslesen

// HTML: <math><a href="https://de.wikipedia.org/wiki/Pi"><mi>π</mi></a></math>
const link = document.querySelector('math a');

if (link && 'protocol' in link) {
  console.log(link.protocol);
} else {
  console.log('MathMLAnchorElement.protocol wird nicht unterstützt');
}
https:

MathML-Link per Skript erzeugen und Protokoll prüfen

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

const math = document.createElementNS(MATHML_NS, 'math');
const a = document.createElementNS(MATHML_NS, 'a');
const mi = document.createElementNS(MATHML_NS, 'mi');
mi.textContent = 'e';

a.setAttribute('href', 'mailto:autor@example.org');
a.append(mi);
math.append(a);
document.body.append(math);

console.log(a.protocol);
mailto:

Alle http-Links in Formeln auf https umstellen

const upgradeMathLinks = () => {
  for (const link of document.querySelectorAll('math a[href]')) {
    if (link.protocol === 'http:') {
      link.protocol = 'https'; // Doppelpunkt wird automatisch ergänzt
      console.log('Umgestellt:', link.getAttribute('href'));
    }
  }
};

upgradeMathLinks();
Umgestellt: https://example.org/formel

Nur sichere Schemata erlauben

const ERLAUBT = new Set(['https:', 'mailto:']);

document.querySelectorAll('math a[href]').forEach((link) => {
  if (!ERLAUBT.has(link.protocol)) {
    console.warn('Entferne unsicheren Link:', link.getAttribute('href'));
    link.removeAttribute('href');
  }
});
Entferne unsicheren Link: javascript:alert(1)

// Wichtig · Fallstricke

Browser-Unterstützung: MathMLAnchorElement ist neu und experimentell. Viele Browser stellen MathML-<a>-Elemente bisher nur als allgemeines MathMLElement ohne URL-Eigenschaften bereit. Prüfe die Unterstützung vorher, etwa mit 'protocol' in element. Falls sie fehlt, kannst du als Ausweg new URL(element.getAttribute('href'), document.baseURI).protocol verwenden.

  • Der Rückgabewert endet immer mit ":". Vergleiche also mit "https:", nicht mit "https".
  • Ein ungültiger Wert beim Setzen löst keinen Fehler aus. Die Zuweisung wird einfach ignoriert.
  • Ein Wechsel zwischen besonderen Schemata (http:, https:, ftp:, ws:, wss:, file:) und anderen Schemata ist laut URL-Standard nicht möglich.
  • Sicherheit: Links wie javascript: in Formeln von Nutzern können XSS ermöglichen. Filtere protocol mit einer Liste erlaubter Schemata, nicht mit einer Liste verbotener.