Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 10.09.2023, 16:43
Интересующийся
Отправить личное сообщение для accountnujen Посмотреть профиль Найти все сообщения от accountnujen
 
Регистрация: 23.01.2022
Сообщений: 17

Как в js сохранить переносы строк и отображать теги как текст?
Есть поле, в которое админ (это важно, потому что это не случайный пользователь-вредитель) вводит какой-то текст. Обрабатывать текст можно только со стороны JS (браузера). Данные после нажатия на кнопку "сохранить" делают JSON.stringify и сохраняются в файл. Затем таким же образом достаются из файла и делают JSON.parse. Мне нужно сделать так, чтобы в выводе было то, что было в textarea. На пару с chatgpt у меня ничего не получается. На данный момент я дошёл до такого результата:

function escapeHTML(text) {
    return text.replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/&/g, "&amp;");
}

то есть в результате у меня ничего не работает из того, что я планировал) Я пытался делать замену \n на <br>
, но этот тег тоже залетает под редактуру...
Ответить с цитированием
  #2 (permalink)  
Старый 10.09.2023, 17:28
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,075

accountnujen,

<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
</head>

<body>
<p id="p"></p>
 <script>
    let str = `asd
    asd <jopa></jopa> <h1></h1>`;
    let json = JSON.stringify(str);
    let txt = JSON.parse(json);
    p.outerText = txt;
 </script>
</body>

</html>
Ответить с цитированием
  #3 (permalink)  
Старый 10.09.2023, 17:34
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,709

Так а что в конечной строке то должно быть? \n или <br>
Если <br>, то сначала заменяешь < и > на &lt; и &gt, а потом \n на <br>.
И только сначала & заменить на &amp; а потом уже все остальное
<!DOCTYPE HTML>
 
<html>
 
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
</head>
 
<body>
<p id="p"></p>
 <script>
	function escapeHTML(text) {
		return text.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/\n/g, '<br>');
	}

    let str = `asd
    asd <jopa></jopa> <h1></h1>`;
    
    let json = JSON.stringify(escapeHTML(str));
    let txt = JSON.parse(json);
    p.innerHTML = txt;
 </script>
</body>
 
</html>

Последний раз редактировалось voraa, 10.09.2023 в 17:47.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сделать "Показать полностью", если текст больше N символов? Уточнение по примеру web-t Общие вопросы Javascript 4 09.02.2023 09:36
Выравнять три дива в одной строке debugx (X)HTML/CSS 9 06.10.2011 12:03
Как сохранить текст в файл на клиенте Lucky13 Общие вопросы Javascript 7 14.08.2011 12:45
lastChild работает в IE, как тут быть? Puaris83 Firefox/Mozilla 4 17.04.2010 23:56
Как текст из responseText преобразовать в теги? Бобр AJAX и COMET 24 26.02.2010 04:37