Signatur
Beschreibung
Die Methode fixed() gehört zu den sogenannten HTML-Wrapper-Methoden von String. Sie gibt einen neuen String zurück, in dem der ursprüngliche Text von <tt> und </tt> umschlossen ist. Früher zeigten Browser solchen Text in einer Schrift mit fester Zeichenbreite (Monospace) an.
Der Ausgangsstring bleibt unverändert, denn Strings sind in JavaScript unveränderlich. fixed() ändert nichts am DOM. Die Methode erzeugt nur Markup als Text. Erst wenn dieser Text zum Beispiel über innerHTML eingefügt wird, entsteht ein Element.
Die Methode ist nur noch aus Gründen der Abwärtskompatibilität in Anhang B der ECMAScript-Spezifikation enthalten. Das Element <tt> selbst ist seit HTML5 ebenfalls veraltet. In neuem Code solltest du je nach Bedeutung <code>, <kbd> oder <samp> verwenden, die Elemente per DOM-API erzeugen und die Darstellung über CSS (font-family: monospace) steuern.
Rückgabewert
<tt>str</tt>. Dabei ist str der in einen String umgewandelte this-Wert.Beispiele
Grundlegende Verwendung
const befehl = 'npm install';
const html = befehl.fixed();
console.log(html);
console.log(befehl); // Original bleibt unverändert
Moderne Alternative: Element per DOM-API erzeugen
// Statt: container.innerHTML = befehl.fixed();
const container = document.createElement('div');
const befehl = 'git status';
const code = document.createElement('code');
code.textContent = befehl; // sicher, kein HTML-Parsing
code.style.fontFamily = 'monospace';
container.append(code);
console.log(container.innerHTML);
Fallstrick: Keine Maskierung von Sonderzeichen
const eingabe = '<img src=x onerror=alert(1)>';
// fixed() maskiert den Inhalt NICHT, das ist gefährlich
console.log(eingabe.fixed());
// Sicherer: Inhalt vorher selbst maskieren
const escapeHtml = (s) => s.replace(/[&<>"']/g, (c) => ({
'&': '&', '<': '<', '>': '>', '"': '"', "'": '''
}[c]));
console.log(escapeHtml(eingabe).fixed());
// Wichtig · Fallstricke
- Veraltet:
fixed()ist in Anhang B von ECMAScript definiert. Es gibt sie nur noch für ältere Webseiten. In neuem Code solltest du sie nicht verwenden. Auch das erzeugte<tt>-Element ist in HTML5 nicht mehr zulässig. - Sicherheit (XSS): Der Inhalt wird nicht maskiert. Nicht vertrauenswürdige Eingaben, die mit
fixed()umschlossen und perinnerHTMLeingefügt werden, können Skripte einschleusen. Verwende stattdessentextContentunddocument.createElement(). - Kompatibilität: Die Methode wird in allen gängigen Browsern und in Node.js unterstützt. Laufzeiten ohne Anhang B müssen sie aber nicht anbieten.
- Wird die Methode auf
nulloderundefinedaufgerufen, zum Beispiel überString.prototype.fixed.call(null), wirft sie einenTypeError. - Die Darstellung gehört ins CSS:
font-family: monospace.