Start · Sprachen · JavaScript · Referenz · String.prototype.sup()

String.prototype.sup()

Methode

Gibt einen neuen String zurück, der den ursprünglichen String in ein <code>&lt;sup&gt;</code>-Element einbettet, damit er hochgestellt angezeigt wird.

seit JavaScript ES2015 (Annex B, veraltet) – Baseline: alle Browse deprecated seit ja Kategorie: method-property

Signatur

String.prototype.sup()

Beschreibung

Die Methode sup() gehört zu den sogenannten HTML-Wrapper-Methoden von String. Sie gibt einen neuen String der Form <sup>str</sup> zurück. Der ursprüngliche String bleibt dabei unverändert, denn Strings sind in JavaScript unveränderlich.

Früher nutzte man sie, um schnell HTML-Markup für Hochstellungen zu erzeugen, etwa für Exponenten (m²), Ordnungszahlen (1st) oder Fußnotenverweise. Die Methode steht im Anhang B der ECMAScript-Spezifikation und gilt als veraltet. Sie existiert nur noch aus Gründen der Abwärtskompatibilität.

Für neuen Code solltest du stattdessen DOM-APIs verwenden, zum Beispiel document.createElement('sup') mit textContent, oder Template-Literale mit sauber maskiertem Inhalt. So hast du die volle Kontrolle über das Markup und vermeidest Sicherheitslücken.

Rückgabewert

Typ
string
Beschreibung
Ein neuer String, der mit <sup> beginnt, dann den ursprünglichen String enthält und mit </sup> endet.

Beispiele

Einfacher Aufruf

const exponent = '2';
console.log(exponent.sup());
console.log(`m${exponent.sup()}`);
<sup>2</sup> m<sup>2</sup>

Fußnotenverweis in ein Element einfügen (veralteter Stil)

const absatz = document.createElement('p');
// Nur mit vertrauenswürdigem, statischem Inhalt verwenden!
absatz.innerHTML = `Laut Studie${'[1]'.sup()} steigt der Wert.`;
document.body.append(absatz);
console.log(absatz.innerHTML);
Laut Studie<sup>[1]</sup> steigt der Wert.

Moderne, sichere Alternative per DOM

const hochgestellt = (text) => {
  const sup = document.createElement('sup');
  sup.textContent = text; // wird automatisch maskiert
  return sup;
};

const formel = document.createElement('p');
formel.append('E = mc', hochgestellt('2'));
document.body.append(formel);
console.log(formel.outerHTML);
<p>E = mc<sup>2</sup></p>

Kein Maskieren von Sonderzeichen

const eingabe = '<img src=x onerror=alert(1)>';
console.log(eingabe.sup());
<sup><img src=x onerror=alert(1)></sup>

// Wichtig · Fallstricke

  • Veraltet: sup() ist in Annex B von ECMAScript festgelegt und wird nicht mehr empfohlen. Alle Browser und Node.js unterstützen die Methode zwar weiterhin, in neuem Code solltest du sie aber nicht verwenden.
  • XSS-Risiko: Der String wird nicht maskiert. Zeichen wie <, > oder & landen unverändert im Ergebnis. Wenn du das Ergebnis mit Benutzereingaben in innerHTML oder document.write() schreibst, kann Schadcode eingeschleust werden. Verwende besser textContent oder maskiere den Inhalt vorher.
  • Eine strenge Content Security Policy blockiert zwar Inline-Skripte, schützt aber nicht vor jeder Markup-Injektion. Sichere DOM-APIs sind daher die bessere Wahl.
  • Das Ergebnis ist nur ein String. Hochgestellt erscheint der Text erst, wenn der String als HTML ausgewertet wird. In der Konsole oder in textContent siehst du die Tags als reinen Text.
  • Semantik: <sup> ist nur für typografisch begründete Hochstellungen gedacht, etwa Exponenten oder Fußnoten. Für reine Gestaltung nimmst du CSS (vertical-align: super).