В духе изменения рендеринга вместо изменения содержимого следующий CSS заставляет каждую новую строку вести себя как <br>
:
white-space: pre;
white-space: pre-line;
Почему два правила: pre-line
влияет только на переводы строки (спасибо за подсказку, @KevinPauli). IE6-7 и другие старые браузеры отступают до более экстремального pre
, который также включает nowrap
и отображает несколько пробелов. Подробная информация об этих и других настройках (pre-wrap
) в mozilla и css-tricks (спасибо @Sablefoste).
Хотя я, как правило, не люблю S.O. склонность к второму угадыванию вопроса вместо ответа на него; в этом случае замена строк новой строкой на разметку <br>
может повысить уязвимость к атаке внедрения с немытым пользовательским вводом. Вы пересекаете ярко-красную линию всякий раз, когда обнаруживаете, что меняете .text()
вызовы на .html()
, что подразумевает буквальный вопрос. (Спасибо @AlexS за выделение этого момента.) Даже если вы исключите угрозу безопасности в то время, будущие изменения могут непреднамеренно представить ее. Вместо этого этот CSS позволяет получать жесткие разрывы строк без разметки, используя более безопасный .text()
.