Ich lasse jQuery Textinhaltsinhalte in ein Li einfügen.
Ich möchte, dass die Zeilenumbrüche visuell beibehalten werden.
Es muss einen wirklich einfachen Weg geben, dies zu tun ...
javascript
jquery
line-breaks
gbhall
quelle
quelle
Antworten:
quelle
Sie können einfach tun:
quelle
Fügen Sie dies in Ihren Code ein (vorzugsweise in eine allgemeine js-Funktionsbibliothek):
Verwendung:
Durch das Erstellen einer String-Prototyp-Funktion können Sie diese für jeden String verwenden.
quelle
Um das Rendering zu ändern , anstatt den Inhalt zu ändern, verhält sich jede neue Zeile mit
<br>
dem folgenden CSS wie folgt :Warum zwei Regeln:
pre-line
Betrifft nur Zeilenumbrüche (danke für den Hinweis, @KevinPauli). IE6-7 und andere alte Browser greifen auf das Extremere zurück,pre
das auchnowrap
mehrere Leerzeichen enthält und rendert. Details zu diesen und anderen Einstellungen (pre-wrap
) bei Mozilla und CSS-Tricks (danke @Sablefoste).Während ich im Allgemeinen der SO-Vorliebe abgeneigt bin, die Frage zu erraten, anstatt sie zu beantworten, kann in diesem Fall das Ersetzen von Zeilenumbrüchen durch
<br>
Markup die Anfälligkeit für Injektionsangriffe durch ungewaschene Benutzereingaben erhöhen . Sie überschreiten eine leuchtend rote Linie, wenn Sie.text()
Anrufe ändern , für.html()
die die wörtliche Frage impliziert, dass dies getan werden müsste. (Vielen Dank an @AlexS, dass Sie diesen Punkt hervorgehoben haben.) Selbst wenn Sie zu diesem Zeitpunkt ein Sicherheitsrisiko ausschließen, können zukünftige Änderungen es unabsichtlich einführen. Stattdessen können Sie mit diesem CSS mit dem Safer harte Zeilenumbrüche ohne Markup erzielen.text()
.quelle
white-space:
Optionen in Betracht ziehen , zpre-wrap
. Siehe css-tricks.com/almanac/properties/w/whitespace.html()
, den Inhalt festzulegen, was es dem Benutzer wiederum ermöglichen würde, beliebigen HTML-Code einzufügen, sofern Sie dies nicht im Voraus herausfiltern..html()
Gefahr @AlexS, versucht zu integrieren.Lösung
Verwenden Sie diesen Code
quelle
Diese JavaScript-Funktion berücksichtigt, ob für den Swap Einfügen oder Ersetzen verwendet werden soll.
(HTML-Zeilenumbrüche einfügen oder ersetzen)
Demo - JSFiddle
quelle
Ich habe dafür eine kleine jQuery-Erweiterung geschrieben:
quelle
um die akzeptierte Antwort von @Luca Filosofi zu verbessern,
Wenn Sie die
/([^>[\s]?\r\n]?)
Anfangsklausel dieses regulären Ausdrucks bei Bedarf ändern, werden auch die Fälle berücksichtigt, in denen die neue Zeile nach einem Tag UND einem Leerzeichen steht, anstatt nur nach einem Tag, unmittelbar gefolgt von einer neuen Zeilequelle
Eine andere Möglichkeit, Text aus einem Textbereich in das DOM einzufügen, wobei die Zeilenumbrüche beibehalten werden , ist die Verwendung der Node.innerText- Eigenschaft, die den gerenderten Textinhalt eines Knotens und seiner Nachkommen darstellt.
Als Getter nähert es sich dem Text an, den der Benutzer erhalten würde, wenn er den Inhalt des Elements mit dem Cursor hervorheben und dann in die Zwischenablage kopieren würde.
Die Eigenschaft wurde 2016 zum Standard und wird von modernen Browsern gut unterstützt. Kann ich verwenden : 97% globale Abdeckung, als ich diese Antwort gepostet habe.
quelle