Signatur
Beschreibung
HTMLBRElement ist die DOM-Schnittstelle für das HTML-Element <br>. Sie erbt alle Eigenschaften und Methoden von HTMLElement, Element, Node und EventTarget. Eigene, noch gültige Eigenschaften bringt sie nicht mit. Es gibt nur die veraltete Eigenschaft clear.
Ein <br> ist ein leeres Element (void element): Es hat keinen Inhalt und kein schließendes Tag. Sinnvoll ist es dort, wo der Zeilenumbruch zum Inhalt gehört, etwa bei Postanschriften, Gedichten oder Liedtexten. Für Abstände oder Layout sollte man es nicht verwenden, dafür ist CSS da (margin, display: block, white-space).
In JavaScript begegnet man HTMLBRElement vor allem, wenn man Text mit Umbrüchen sicher ins DOM schreibt (document.createElement('br') statt innerHTML) oder wenn man Umbrüche in bearbeitbaren Bereichen (contenteditable) auswertet oder entfernt.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $clear | string | "" | Veraltet. Spiegelt das Attribut clear (left, right, all, none) und gibt an, wo der Text nach dem Umbruch neben umflossenen Elementen weiterläuft. Stattdessen die CSS-Eigenschaft clear verwenden. |
Rückgabewert
document.createElement('br') sowie Abfragen wie querySelector('br') liefern eine Instanz von HTMLBRElement.Beispiele
Element erzeugen und Typ prüfen
const br = document.createElement('br');
console.log(br instanceof HTMLBRElement);
console.log(br.tagName);
console.log(Object.getPrototypeOf(br) === HTMLBRElement.prototype);
Mehrzeiligen Text ohne XSS-Risiko einfügen
// Benutzereingabe mit Zeilenumbrüchen sicher darstellen
const renderMultiline = (target, text) => {
target.replaceChildren();
text.split('\n').forEach((line, i) => {
if (i > 0) target.append(document.createElement('br'));
target.append(document.createTextNode(line));
});
};
const adresse = document.createElement('address');
renderMultiline(adresse, 'Max Mustermann\nMusterstraße 1\n12345 <b>Musterstadt</b>');
document.body.append(adresse);
console.log(adresse.querySelectorAll('br').length);
console.log(adresse.innerHTML);
Doppelte Umbrüche in contenteditable bereinigen
const editor = document.createElement('div');
editor.contentEditable = 'true';
editor.innerHTML = 'Zeile 1<br><br><br>Zeile 2<br>';
// Aufeinanderfolgende <br> auf eines reduzieren
[...editor.querySelectorAll('br')].forEach((br) => {
if (br.previousSibling instanceof HTMLBRElement) br.remove();
});
// Abschließendes <br> entfernen
if (editor.lastChild instanceof HTMLBRElement) editor.lastChild.remove();
console.log(editor.innerHTML);
// Wichtig · Fallstricke
- Veraltete Eigenschaft:
clearist obsolet. Für Float-Verhalten die CSS-Eigenschaftclearverwenden. - Leeres Element:
<br>kann keine Kindknoten enthalten. EinappendChild()darauf funktioniert zwar im DOM, beim Parsen bzw. Serialisieren von HTML gehen die Kinder aber verloren. - Barrierefreiheit: Screenreader lesen
<br>oft gar nicht vor oder nur als kurze Pause. Absätze gehören in<p>, Abstände werden per CSS gesetzt. - Sicherheit: Text nicht mit
text.replace(/\n/g, '<br>')aninnerHTMLübergeben, weil das XSS ermöglicht. BessercreateElement('br')und Textknoten verwenden, oder CSSwhite-space: pre-line. - contenteditable: Browser setzen in leere Zeilen oft ein Platzhalter-
<br>ein. Beim Auswerten des Inhalts muss man das berücksichtigen. - Das Interface wird von allen Browsern seit jeher unterstützt.