Как в js сохранить переносы строк и отображать теги как текст?
Есть поле, в которое админ (это важно, потому что это не случайный пользователь-вредитель) вводит какой-то текст. Обрабатывать текст можно только со стороны JS (браузера). Данные после нажатия на кнопку "сохранить" делают JSON.stringify и сохраняются в файл. Затем таким же образом достаются из файла и делают JSON.parse. Мне нужно сделать так, чтобы в выводе было то, что было в textarea. На пару с chatgpt у меня ничего не получается. На данный момент я дошёл до такого результата:
![]() function escapeHTML(text) { return text.replace(/</g, "<").replace(/>/g, ">").replace(/&/g, "&"); } то есть в результате у меня ничего не работает из того, что я планировал) Я пытался делать замену \n на <br> , но этот тег тоже залетает под редактуру... |
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> |
Так а что в конечной строке то должно быть? \n или <br>
Если <br>, то сначала заменяешь < и > на < и >, а потом \n на <br>. И только сначала & заменить на & а потом уже все остальное <!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, "&").replace(/</g, "<").replace(/>/g, ">").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> |
Часовой пояс GMT +3, время: 15:44. |