Start · Sprachen · JavaScript · Referenz · MathMLAnchorElement.hreflang

MathMLAnchorElement.hreflang

Eigenschaft

Liest oder setzt die Sprache der verlinkten Ressource eines MathML-<code>&lt;a&gt;</code>-Elements und spiegelt damit das Attribut <code>hreflang</code> wider.

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

Signatur

MathMLAnchorElement.hreflang

Beschreibung

Die Eigenschaft hreflang der Schnittstelle MathMLAnchorElement ist ein String mit der Sprache der Ressource, auf die ein MathML-Link (<a> im MathML-Namensraum) verweist. Sie spiegelt das Inhaltsattribut hreflang wider: Wenn du die Eigenschaft liest, erhältst du den Attributwert, und wenn du sie setzt, wird das Attribut geändert.

Der Wert sollte ein gültiges Sprach-Tag nach BCP 47 sein, zum Beispiel "de", "en-US" oder "fr-CA". Der Wert dient nur als Hinweis für Suchmaschinen, Hilfstechnologien und Skripte. Der Browser prüft ihn nicht und verwendet ihn auch nicht, um Inhalte auszuhandeln.

Das ist dann sinnvoll, wenn Formeln in einem mehrsprachigen Dokument auf Erklärungen, Definitionen oder Herleitungen in einer anderen Sprache verlinken. Ein Skript kann solche Links dann zum Beispiel kennzeichnen oder filtern. Die Eigenschaft verhält sich genauso wie HTMLAnchorElement.hreflang.

Parameter

Name Typ Default Beschreibung
$value string "" Beim Setzen: ein BCP-47-Sprach-Tag, z. B. "en". Andere Werte werden ohne Prüfung in einen String umgewandelt und übernommen.

Rückgabewert

Typ
string
Beschreibung
Der aktuelle Wert des Attributs hreflang. Fehlt das Attribut, ist es ein leerer String "".

Beispiele

Sprache eines MathML-Links auslesen

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

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

MathML-Link per Skript erzeugen und Sprache setzen

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', 'https://fr.wikipedia.org/wiki/E_(nombre)');
// Eigenschaft setzen, falls vorhanden, sonst das Attribut als Rückfallebene
if ('hreflang' in a) {
  a.hreflang = 'fr';
} else {
  a.setAttribute('hreflang', 'fr');
}

a.append(mi);
math.append(a);
document.body.append(math);

console.log(a.getAttribute('hreflang'));
fr

Fremdsprachige Formel-Links kennzeichnen

const pageLang = document.documentElement.lang || 'de';

const foreignLinks = [...document.querySelectorAll('math a[hreflang]')]
  .filter((a) => !a.getAttribute('hreflang').startsWith(pageLang));

foreignLinks.forEach((a) => {
  const lang = a.hreflang ?? a.getAttribute('hreflang');
  a.setAttribute('title', `Verweist auf Inhalt in: ${lang}`);
});

console.log(`${foreignLinks.length} fremdsprachige Links markiert`);
2 fremdsprachige Links markiert

// Wichtig · Fallstricke

  • Browser-Kompatibilität: MathMLAnchorElement ist neu und experimentell. Die meisten Browser behandeln MathML-<a> bisher als allgemeines MathMLElement ohne diese Eigenschaft. Prüfe die Unterstützung vorher mit 'hreflang' in element oder weiche auf getAttribute('hreflang') bzw. setAttribute('hreflang', …) aus.
  • Keine Prüfung: Ungültige Sprach-Tags werden ohne Fehlermeldung übernommen. Der Wert hat nur Hinweischarakter und hat keinen Einfluss darauf, was der Server ausliefert.
  • Namensraum beachten: Ein MathML-<a> muss mit createElementNS('http://www.w3.org/1998/Math/MathML', 'a') erzeugt werden. document.createElement('a') liefert dagegen ein HTMLAnchorElement.
  • Ohne gesetztes href ist das Element kein funktionierender Link. hreflang hat dann keine praktische Bedeutung.